<!DOCTYPE HTML>
<html lang="cn" class="light" dir="ltr">
    <head>
        <!-- Book generated using mdBook -->
        <meta charset="UTF-8">
        <title>easy-to-code</title>
        <meta name="robots" content="noindex">


        <!-- Custom HTML head -->
        
        <meta name="description" content="">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <meta name="theme-color" content="#ffffff">

        <link rel="icon" href="favicon.svg">
        <link rel="shortcut icon" href="favicon.png">
        <link rel="stylesheet" href="css/variables.css">
        <link rel="stylesheet" href="css/general.css">
        <link rel="stylesheet" href="css/chrome.css">
        <link rel="stylesheet" href="css/print.css" media="print">

        <!-- Fonts -->
        <link rel="stylesheet" href="FontAwesome/css/font-awesome.css">
        <link rel="stylesheet" href="fonts/fonts.css">

        <!-- Highlight.js Stylesheets -->
        <link rel="stylesheet" href="highlight.css">
        <link rel="stylesheet" href="tomorrow-night.css">
        <link rel="stylesheet" href="ayu-highlight.css">

        <!-- Custom theme stylesheets -->

    </head>
    <body class="sidebar-visible no-js">
    <div id="body-container">
        <!-- Provide site root to javascript -->
        <script>
            var path_to_root = "";
            var default_theme = window.matchMedia("(prefers-color-scheme: dark)").matches ? "navy" : "light";
        </script>

        <!-- Work around some values being stored in localStorage wrapped in quotes -->
        <script>
            try {
                var theme = localStorage.getItem('mdbook-theme');
                var sidebar = localStorage.getItem('mdbook-sidebar');

                if (theme.startsWith('"') && theme.endsWith('"')) {
                    localStorage.setItem('mdbook-theme', theme.slice(1, theme.length - 1));
                }

                if (sidebar.startsWith('"') && sidebar.endsWith('"')) {
                    localStorage.setItem('mdbook-sidebar', sidebar.slice(1, sidebar.length - 1));
                }
            } catch (e) { }
        </script>

        <!-- Set the theme before any content is loaded, prevents flash -->
        <script>
            var theme;
            try { theme = localStorage.getItem('mdbook-theme'); } catch(e) { }
            if (theme === null || theme === undefined) { theme = default_theme; }
            var html = document.querySelector('html');
            html.classList.remove('light')
            html.classList.add(theme);
            var body = document.querySelector('body');
            body.classList.remove('no-js')
            body.classList.add('js');
        </script>

        <input type="checkbox" id="sidebar-toggle-anchor" class="hidden">

        <!-- Hide / unhide sidebar before it is displayed -->
        <script>
            var body = document.querySelector('body');
            var sidebar = null;
            var sidebar_toggle = document.getElementById("sidebar-toggle-anchor");
            if (document.body.clientWidth >= 1080) {
                try { sidebar = localStorage.getItem('mdbook-sidebar'); } catch(e) { }
                sidebar = sidebar || 'visible';
            } else {
                sidebar = 'hidden';
            }
            sidebar_toggle.checked = sidebar === 'visible';
            body.classList.remove('sidebar-visible');
            body.classList.add("sidebar-" + sidebar);
        </script>

        <nav id="sidebar" class="sidebar" aria-label="Table of contents">
            <div class="sidebar-scrollbox">
                <ol class="chapter"><li class="chapter-item expanded "><a href="Where_to_Download.html"><strong aria-hidden="true">1.</strong> 常用编程软件下载地址</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="CS_tutorial.html"><strong aria-hidden="true">1.1.</strong> 程序员内功心法</a></li><li class="chapter-item expanded "><a href="Awesome_software.html"><strong aria-hidden="true">1.2.</strong> 精品软件</a></li><li class="chapter-item expanded "><a href="Vfox_dev.html"><strong aria-hidden="true">1.3.</strong> Vfox下载安装</a></li><li class="chapter-item expanded "><a href="OpenSSL_dev.html"><strong aria-hidden="true">1.4.</strong> OpenSSL下载安装</a></li><li class="chapter-item expanded "><a href="Protobuf_dev.html"><strong aria-hidden="true">1.5.</strong> Protobuf下载安装</a></li><li class="chapter-item expanded "><a href="Qemu_dev.html"><strong aria-hidden="true">1.6.</strong> Qemu下载安装</a></li><li class="chapter-item expanded "><a href="Wireshark_dev.html"><strong aria-hidden="true">1.7.</strong> Wireshark下载安装</a></li><li class="chapter-item expanded "><a href="Npcap_dev.html"><strong aria-hidden="true">1.8.</strong> Npcap下载安装</a></li><li class="chapter-item expanded "><a href="UE_dev.html"><strong aria-hidden="true">1.9.</strong> UE下载设置</a></li></ol></li><li class="chapter-item expanded "><a href="Cpp_dev.html"><strong aria-hidden="true">2.</strong> C++开发环境部署</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="MSVC_dev.html"><strong aria-hidden="true">2.1.</strong> MSVC下载安装</a></li><li class="chapter-item expanded "><a href="Mingw-w64_dev.html"><strong aria-hidden="true">2.2.</strong> Mingw-w64下载安装</a></li><li class="chapter-item expanded "><a href="Cmake_dev.html"><strong aria-hidden="true">2.3.</strong> Cmake下载安装</a></li><li class="chapter-item expanded "><a href="Conan_dev.html"><strong aria-hidden="true">2.4.</strong> Conan下载安装</a></li><li class="chapter-item expanded "><a href="Vcpkg_dev.html"><strong aria-hidden="true">2.5.</strong> Vcpkg下载安装</a></li><li class="chapter-item expanded "><a href="Boost_dev.html"><strong aria-hidden="true">2.6.</strong> Boost下载安装</a></li><li class="chapter-item expanded "><a href="Clion+MSVC_dev.html"><strong aria-hidden="true">2.7.</strong> Clion+MSVC配置</a></li><li class="chapter-item expanded "><a href="MySQL_compile.html"><strong aria-hidden="true">2.8.</strong> MySQL源码编译</a></li><li class="chapter-item expanded "><a href="Clang_dev.html"><strong aria-hidden="true">2.9.</strong> Clang下载安装</a></li></ol></li><li class="chapter-item expanded "><a href="Rust_dev.html"><strong aria-hidden="true">3.</strong> Rust开发环境部署</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="Awesome_rust.html"><strong aria-hidden="true">3.1.</strong> Rust优秀项目</a></li><li class="chapter-item expanded "><a href="Cargo_kits.html"><strong aria-hidden="true">3.2.</strong> Cargo常用软件</a></li><li class="chapter-item expanded "><a href="Tauri_dev.html"><strong aria-hidden="true">3.3.</strong> Tauri开发</a></li><li class="chapter-item expanded "><a href="Diesel_dev.html"><strong aria-hidden="true">3.4.</strong> Diesel配置</a></li></ol></li><li class="chapter-item expanded "><a href="Python_dev.html"><strong aria-hidden="true">4.</strong> Python安装部署</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="Awesome_py.html"><strong aria-hidden="true">4.1.</strong> Python优秀项目</a></li></ol></li><li class="chapter-item expanded "><a href="Go_dev.html"><strong aria-hidden="true">5.</strong> Go开发环境部署</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="Go_dev_kits.html"><strong aria-hidden="true">5.1.</strong> Go开发插件</a></li></ol></li><li class="chapter-item expanded "><a href="Zig_dev.html"><strong aria-hidden="true">6.</strong> Zig开发环境部署</a></li><li class="chapter-item expanded "><a href="Swift_dev.html"><strong aria-hidden="true">7.</strong> Swift开发环境部署</a></li><li class="chapter-item expanded "><a href="Java_dev.html"><strong aria-hidden="true">8.</strong> Java开发环境部署</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="Maven_dev.html"><strong aria-hidden="true">8.1.</strong> Maven安装配置</a></li><li class="chapter-item expanded "><a href="Selenium_dev.html"><strong aria-hidden="true">8.2.</strong> Selenium开发</a></li></ol></li><li class="chapter-item expanded "><a href="Node_dev.html"><strong aria-hidden="true">9.</strong> Node安装部署</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="Yarn_dev.html"><strong aria-hidden="true">9.1.</strong> Yarn安装部署</a></li><li class="chapter-item expanded "><a href="Vue_dev.html"><strong aria-hidden="true">9.2.</strong> Vue插件安装</a></li></ol></li><li class="chapter-item expanded "><a href="PHPMyAdmin_dev.html"><strong aria-hidden="true">10.</strong> phpMyAdmin越狱</a></li><li class="chapter-item expanded "><a href="Git_init.html"><strong aria-hidden="true">11.</strong> Git初始化配置</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="Git_tutorial.html"><strong aria-hidden="true">11.1.</strong> Git简易教程</a></li><li class="chapter-item expanded "><a href="Git_issues.html"><strong aria-hidden="true">11.2.</strong> Git疑难杂症</a></li></ol></li><li class="chapter-item expanded "><a href="VSCode_dev.html"><strong aria-hidden="true">12.</strong> 实用技能</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="VSCode_dev.html"><strong aria-hidden="true">12.1.</strong> VSCode实用插件</a></li><li class="chapter-item expanded "><a href="Excalidraw_dev.html"><strong aria-hidden="true">12.2.</strong> Excalidraw下载安装部署</a></li><li class="chapter-item expanded "><a href="Hexo_dev.html"><strong aria-hidden="true">12.3.</strong> Hexo个人博客搭建</a></li></ol></li></ol>
            </div>
            <div id="sidebar-resize-handle" class="sidebar-resize-handle">
                <div class="sidebar-resize-indicator"></div>
            </div>
        </nav>

        <!-- Track and set sidebar scroll position -->
        <script>
            var sidebarScrollbox = document.querySelector('#sidebar .sidebar-scrollbox');
            sidebarScrollbox.addEventListener('click', function(e) {
                if (e.target.tagName === 'A') {
                    sessionStorage.setItem('sidebar-scroll', sidebarScrollbox.scrollTop);
                }
            }, { passive: true });
            var sidebarScrollTop = sessionStorage.getItem('sidebar-scroll');
            sessionStorage.removeItem('sidebar-scroll');
            if (sidebarScrollTop) {
                // preserve sidebar scroll position when navigating via links within sidebar
                sidebarScrollbox.scrollTop = sidebarScrollTop;
            } else {
                // scroll sidebar to current active section when navigating via "next/previous chapter" buttons
                var activeSection = document.querySelector('#sidebar .active');
                if (activeSection) {
                    activeSection.scrollIntoView({ block: 'center' });
                }
            }
        </script>

        <div id="page-wrapper" class="page-wrapper">

            <div class="page">
                                <div id="menu-bar-hover-placeholder"></div>
                <div id="menu-bar" class="menu-bar sticky">
                    <div class="left-buttons">
                        <label id="sidebar-toggle" class="icon-button" for="sidebar-toggle-anchor" title="Toggle Table of Contents" aria-label="Toggle Table of Contents" aria-controls="sidebar">
                            <i class="fa fa-bars"></i>
                        </label>
                        <button id="theme-toggle" class="icon-button" type="button" title="Change theme" aria-label="Change theme" aria-haspopup="true" aria-expanded="false" aria-controls="theme-list">
                            <i class="fa fa-paint-brush"></i>
                        </button>
                        <ul id="theme-list" class="theme-popup" aria-label="Themes" role="menu">
                            <li role="none"><button role="menuitem" class="theme" id="light">Light</button></li>
                            <li role="none"><button role="menuitem" class="theme" id="rust">Rust</button></li>
                            <li role="none"><button role="menuitem" class="theme" id="coal">Coal</button></li>
                            <li role="none"><button role="menuitem" class="theme" id="navy">Navy</button></li>
                            <li role="none"><button role="menuitem" class="theme" id="ayu">Ayu</button></li>
                        </ul>
                        <button id="search-toggle" class="icon-button" type="button" title="Search. (Shortkey: s)" aria-label="Toggle Searchbar" aria-expanded="false" aria-keyshortcuts="S" aria-controls="searchbar">
                            <i class="fa fa-search"></i>
                        </button>
                    </div>

                    <h1 class="menu-title">easy-to-code</h1>

                    <div class="right-buttons">
                        <a href="print.html" title="Print this book" aria-label="Print this book">
                            <i id="print-button" class="fa fa-print"></i>
                        </a>

                    </div>
                </div>

                <div id="search-wrapper" class="hidden">
                    <form id="searchbar-outer" class="searchbar-outer">
                        <input type="search" id="searchbar" name="searchbar" placeholder="Search this book ..." aria-controls="searchresults-outer" aria-describedby="searchresults-header">
                    </form>
                    <div id="searchresults-outer" class="searchresults-outer hidden">
                        <div id="searchresults-header" class="searchresults-header"></div>
                        <ul id="searchresults">
                        </ul>
                    </div>
                </div>

                <!-- Apply ARIA attributes after the sidebar and the sidebar toggle button are added to the DOM -->
                <script>
                    document.getElementById('sidebar-toggle').setAttribute('aria-expanded', sidebar === 'visible');
                    document.getElementById('sidebar').setAttribute('aria-hidden', sidebar !== 'visible');
                    Array.from(document.querySelectorAll('#sidebar a')).forEach(function(link) {
                        link.setAttribute('tabIndex', sidebar === 'visible' ? 0 : -1);
                    });
                </script>

                <div id="content" class="content">
                    <main>
                        <p>一、开发环境</p>
<p>JDK11</p>
<p><a href="https://www.oracle.com/java/technologies/downloads/#java11">https://www.oracle.com/java/technologies/downloads/#java11</a></p>
<p>Tomcat</p>
<p><a href="https://tomcat.apache.org/download-10.cgi">https://tomcat.apache.org/download-10.cgi</a></p>
<p>二、maven及插件</p>
<p>idea</p>
<p><a href="https://www.jetbrains.com/idea/download/other.html">https://www.jetbrains.com/idea/download/other.html</a></p>
<p>maven仓库索引</p>
<p><a href="https://mvnrepository.com">https://mvnrepository.com</a></p>
<p>lombok</p>
<p><a href="https://plugins.jetbrains.com/plugin/6317-lombok/versions">https://plugins.jetbrains.com/plugin/6317-lombok/versions</a></p>
<p>free-mybatis-plugin</p>
<p>https://plugins.jetbrains.com/plugin/8321-free-mybatis-plugin/versions/stable/74577</p>
<p>https://github.com/chuntungho/free-mybatis-plugin</p>
<p>translation</p>
<p>https://plugins.jetbrains.com/plugin/8579-translation/versions</p>
<p>idea插件，待添加
Alibaba Java Coding Guidelines</p>
<p>GenerateAllSetter</p>
<p>SequenceDiagram</p>
<p>CheckStyle-IDEA</p>
<p>JRebel and XRebel</p>
<p>Codota</p>
<p>GsonFormat</p>
<p>Rainbow Brackets</p>
<p>CodeGlance</p>
<p>maven</p>
<p><a href="https://maven.apache.org/download.cgi">https://maven.apache.org/download.cgi</a></p>
<p>maven-helper解决依赖冲突</p>
<p>https://plugins.jetbrains.com/plugin/7179-maven-helper/</p>
<p>三、后端技术</p>
<p>dubbo</p>
<p><a href="https://dubbo.apache.org/zh/index.html">https://dubbo.apache.org/zh/index.html</a></p>
<p>dubbo-admin</p>
<p>https://github.com/apache/dubbo-admin</p>
<p>nacos</p>
<p>https://github.com/alibaba/nacos/releases</p>
<p>https://github.com/alibaba/spring-cloud-alibaba/wiki/Nacos-discovery</p>
<p>nginx</p>
<p>http://nginx.org/en/download.html</p>
<p>Elasticsearch7.17.3</p>
<p>https://www.elastic.co/cn/downloads/elasticsearch</p>
<p>elasticsearch-analysis-ik（中文分词器）</p>
<p>https://github.com/medcl/elasticsearch-analysis-ik/releases</p>
<p>Kibana（Elasticsearch客户端）</p>
<p>https://www.elastic.co/cn/downloads/past-releases/kibana-7-17-3</p>
<p>Logstash（用于收集日志）</p>
<p>https://www.elastic.co/cn/downloads/past-releases/logstash-7-17-3</p>
<p>四、数据库</p>
<p>Redis7.0</p>
<p><a href="https://github.com/redis/redis">https://github.com/redis/redis</a></p>
<p><a href="https://redis.io/download">https://redis.io/download</a></p>
<p>https://github.com/tporadowski/redis/releases</p>
<p>MongoDB</p>
<p>https://www.mongodb.com/download-center/community</p>
<p>MySQL5.7</p>
<p><a href="https://www.mysql.com">https://www.mysql.com</a></p>
<div style="break-before: page; page-break-before: always;"></div><h1 id="csapp-学习资料"><a class="header" href="#csapp-学习资料">CSAPP 学习资料</a></h1>
<h2 id="原书辅导"><a class="header" href="#原书辅导">原书辅导</a></h2>
<p><a href="https://csapp.cs.cmu.edu">原书课件</a></p>
<p><a href="https://csapp.cs.cmu.edu/3e/code.html">原书配套代码</a></p>
<p><a href="https://csapp.cs.cmu.edu/3e/labs.html">原书九大实验</a></p>
<p><a href="https://dreamanddead.github.io/CSAPP-3e-Solutions">CSAPP家庭作业解答</a></p>
<p><a href="https://www.zhihu.com/column/c_1480603406519238656">CSAPP九大实验解答</a></p>
<p><a href="https://fengmuzi2003.gitbook.io/csapp3e">CSAPP重点解读</a></p>
<p><a href="https://www.bilibili.com/video/BV1RK4y1R7Kf">CSAPP重点解读视频解说</a></p>
<h2 id="拓展"><a class="header" href="#拓展">拓展</a></h2>
<p><a href="https://www.bilibili.com/video/BV1rb4y1V7A2">南京大学 计算机系统基础实验课 王慧妍</a></p>
<p><a href="https://www.bilibili.com/video/BV1Cm4y1d7Ur">南京大学 2022操作系统 蒋炎岩</a></p>
<h2 id="问答"><a class="header" href="#问答">问答</a></h2>
<p><a href="https://www.zhihu.com/question/36365234">知乎问题：怎么去读CSAPP</a></p>
<p><a href="https://zhuanlan.zhihu.com/p/650266223">如何阅读《深入理解计算机系统》这本书？</a></p>
<h2 id="笔记资料"><a class="header" href="#笔记资料">笔记资料</a></h2>
<p><a href="https://github.com/crisxuan/bestJavaer/blob/master/computersystem/csapp-basic.md">计算机系统入门概述</a></p>
<div style="break-before: page; page-break-before: always;"></div><h1 id="精品小软件"><a class="header" href="#精品小软件">精品小软件</a></h1>
<p><a href="https://github.com/pawelsalawa/sqlitestudio">sqlitestudio</a> <a href="https://sqlitestudio.pl">官网</a></p>
<div style="break-before: page; page-break-before: always;"></div><h1 id="软件安装神器vfox"><a class="header" href="#软件安装神器vfox">软件安装神器vfox</a></h1>
<h2 id="1安装"><a class="header" href="#1安装">1、安装</a></h2>
<h3 id="仓库地址"><a class="header" href="#仓库地址">仓库地址</a></h3>
<p><a href="https://github.com/version-fox/vfox">https://github.com/version-fox/vfox</a></p>
<h3 id="下载地址"><a class="header" href="#下载地址">下载地址</a></h3>
<p><a href="https://github.com/version-fox/vfox/releases">https://github.com/version-fox/vfox/releases</a></p>
<h2 id="2使用"><a class="header" href="#2使用">2、使用</a></h2>
<h3 id="官方文档"><a class="header" href="#官方文档">官方文档</a></h3>
<p><a href="https://vfox.lhan.me">https://vfox.lhan.me</a></p>
<pre><code>// 查看所有可安装软件
vfox available

// 查询版本
vfox search nodejs

// 安装
vfox install nodejs@18

// 使用
vfox use nodejs@18
</code></pre>
<h2 id="3配置"><a class="header" href="#3配置">3、配置</a></h2>
<p>配置地址 $HOME/.version-fox/config.yaml</p>
<pre><code>vfox config [&lt;key&gt;] [&lt;value&gt;]

vfox config proxy.enable true

vfox config proxy.url http://localhost:7890

vfox config storage.sdkPath D:/ProgramFiles/vfox_sdk
</code></pre>
<div style="break-before: page; page-break-before: always;"></div><p>下载地址</p>
<p><a href="https://slproweb.com/products/Win32OpenSSL.html">https://slproweb.com/products/Win32OpenSSL.html</a></p>
<div style="break-before: page; page-break-before: always;"></div><p>下载地址</p>
<p><a href="https://github.com/protocolbuffers/protobuf">https://github.com/protocolbuffers/protobuf</a></p>
<div style="break-before: page; page-break-before: always;"></div><p>下载地址</p>
<p><a href="https://www.qemu.org/download">https://www.qemu.org/download</a></p>
<div style="break-before: page; page-break-before: always;"></div><p>下载地址</p>
<p><a href="https://www.wireshark.org/#download">https://www.wireshark.org/#download</a></p>
<div style="break-before: page; page-break-before: always;"></div><p>下载地址</p>
<p><a href="https://npcap.com/#download">https://npcap.com/#download</a></p>
<div style="break-before: page; page-break-before: always;"></div><h2 id="安装教程"><a class="header" href="#安装教程">安装教程</a></h2>
<p><a href="https://dev.epicgames.com/documentation/zh-cn/unreal-engine/setting-up-visual-studio-development-environment-for-cplusplus-projects-in-unreal-engine?application_version=5.3">https://dev.epicgames.com/documentation/zh-cn/unreal-engine/setting-up-visual-studio-development-environment-for-cplusplus-projects-in-unreal-engine?application_version=5.3</a></p>
<h2 id="快捷键"><a class="header" href="#快捷键">快捷键</a></h2>
<p>项目启动后 "开启调试，Key=Apostrophe</p>
<h2 id="常用设置"><a class="header" href="#常用设置">常用设置</a></h2>
<h3 id="修改缓存目录"><a class="header" href="#修改缓存目录">修改缓存目录</a></h3>
<p>D:\Program Files\Epic Games\UE_4.27\Engine\Config</p>
<p>打开BaseEngine.ini</p>
<p>Path="%ENGINEVERSIONAGNOSTICUSERDIR%DerivedDataCache"</p>
<p>=&gt;</p>
<p>Path="%GAMEDIR%DerivedDataCache"</p>
<h3 id="标签页多开设置"><a class="header" href="#标签页多开设置">标签页多开设置</a></h3>
<p>Editor preference</p>
<p>General-Apperance：Asset Editor Open Location =&gt;  Main Window</p>
<h2 id="git项目关闭编译前同步"><a class="header" href="#git项目关闭编译前同步">Git项目关闭编译前同步</a></h2>
<p>如果项目中有 .git 文件夹（通常是拉取到本地并从源码编译的UE目录中），则UBT在编译时会默认启用 git 功能。这个功能在编译我们自己的项目时，有时会导致20-30秒的等待</p>
<p>提示 Watting for 'git status' command to complate 后，需要等待一段时间并提示超时。</p>
<p>可以通过修改 <strong>...\Engine\Saved\UnrealBuildTool</strong> 下的 <strong>BuildConfiguration.xml</strong> 暂时关闭这个功能：</p>
<p>C:\Users{用户名}\AppData\Roaming\Unreal Engine\UnrealBuildTool</p>
<pre><code class="language-xml">&lt;?xml version="1.0" encoding="utf-8" ?&gt;
&lt;Configuration xmlns="https://www.unrealengine.com/BuildConfiguration"&gt;
&lt;!-- 添加的代码 --&gt;
&lt;SourceFileWorkingSet&gt; 
&lt;Provider&gt;None&lt;/Provider&gt; 
&lt;RepositoryPath&gt;&lt;/RepositoryPath&gt; 
&lt;GitPath&gt;&lt;/GitPath&gt; 
&lt;/SourceFileWorkingSet&gt;
&lt;!-- 添加结束 --&gt;
&lt;/Configuration&gt;
</code></pre>
<div style="break-before: page; page-break-before: always;"></div><h1 id="msvc编译器安装"><a class="header" href="#msvc编译器安装">MSVC编译器安装</a></h1>
<div style="break-before: page; page-break-before: always;"></div><h1 id="vs-studio下载安装"><a class="header" href="#vs-studio下载安装">VS Studio下载安装</a></h1>
<h2 id="msvc2022"><a class="header" href="#msvc2022">MSVC2022</a></h2>
<h3 id="先下载社区版安装引导程序"><a class="header" href="#先下载社区版安装引导程序">先下载社区版安装引导程序</a></h3>
<p><a href="https://learn.microsoft.com/zh-cn/visualstudio/install/create-a-network-installation-of-visual-studio?view=vs-2022">https://learn.microsoft.com/zh-cn/visualstudio/install/create-a-network-installation-of-visual-studio?view=vs-2022</a></p>
<p><a href="https://visualstudio.microsoft.com/zh-hans/downloads">https://visualstudio.microsoft.com/zh-hans/downloads</a></p>
<h3 id="快捷键-1"><a class="header" href="#快捷键-1">快捷键</a></h3>
<p>Ctrl+K+D 代码格式化</p>
<h3 id="离线下载全部组件体积很大慎用"><a class="header" href="#离线下载全部组件体积很大慎用">离线下载全部组件，体积很大，慎用！</a></h3>
<pre><code>vs_Community_2022.exe --layout layout --lang zh-CN
</code></pre>
<h3 id="msvc2022安装要求"><a class="header" href="#msvc2022安装要求">MSVC2022安装要求</a></h3>
<p><a href="https://learn.microsoft.com/zh-cn/visualstudio/releases/2022/system-requirements">https://learn.microsoft.com/zh-cn/visualstudio/releases/2022/system-requirements</a></p>
<h3 id="msvc2022组件查询"><a class="header" href="#msvc2022组件查询">MSVC2022组件查询</a></h3>
<p><a href="https://learn.microsoft.com/zh-cn/visualstudio/install/workload-component-id-vs-community?view=vs-2022&amp;preserve-view=true">https://learn.microsoft.com/zh-cn/visualstudio/install/workload-component-id-vs-community?view=vs-2022&amp;preserve-view=true</a></p>
<h3 id="msvc2022历史版本"><a class="header" href="#msvc2022历史版本">MSVC2022历史版本</a></h3>
<p><a href="https://learn.microsoft.com/zh-cn/visualstudio/releases/2022/release-history#release-dates-and-build-numbers">https://learn.microsoft.com/zh-cn/visualstudio/releases/2022/release-history#release-dates-and-build-numbers</a></p>
<h2 id="可选组件"><a class="header" href="#可选组件">可选组件</a></h2>
<h3 id="visual-studio-核心编辑器visual-studio-community-2019-随附"><a class="header" href="#visual-studio-核心编辑器visual-studio-community-2019-随附">Visual Studio 核心编辑器（Visual Studio Community 2019 随附）</a></h3>
<p>ID：Microsoft.VisualStudio.Workload.CoreEditor</p>
<h3 id="使用-c-的桌面开发"><a class="header" href="#使用-c-的桌面开发">使用 C++ 的桌面开发</a></h3>
<p>包含MSVC、Clang、CMake等工具！</p>
<p>ID： Microsoft.VisualStudio.Workload.NativeDesktop</p>
<h3 id="使用-c-的游戏开发"><a class="header" href="#使用-c-的游戏开发">使用 C++ 的游戏开发</a></h3>
<p>包含DirectX、Unreal 或 Cocos2d 开发运行库！有Win10SDK!</p>
<p>ID： Microsoft.VisualStudio.Workload.NativeGame</p>
<h3 id="选择性下载"><a class="header" href="#选择性下载">选择性下载</a></h3>
<pre><code>vs_Community_2022.exe --layout layout --lang zh-CN --add Microsoft.VisualStudio.Workload.CoreEditor --add  Microsoft.VisualStudio.Workload.NativeDesktop --add Microsoft.VisualStudio.Workload.NativeGame --includeRecommended --includeOptional
</code></pre>
<h2 id="msvc2019"><a class="header" href="#msvc2019">MSVC2019</a></h2>
<p><a href="https://learn.microsoft.com/zh-cn/visualstudio/releases/2019/system-requirements">https://learn.microsoft.com/zh-cn/visualstudio/releases/2019/system-requirements</a></p>
<h2 id="msvc2019组件查询"><a class="header" href="#msvc2019组件查询">MSVC2019组件查询</a></h2>
<p><a href="https://learn.microsoft.com/zh-cn/visualstudio/install/workload-component-id-vs-community?view=vs-2019&amp;preserve-view=true">https://learn.microsoft.com/zh-cn/visualstudio/install/workload-component-id-vs-community?view=vs-2019&amp;preserve-view=true</a></p>
<h2 id="vc库下载"><a class="header" href="#vc库下载">VC++库下载</a></h2>
<p><a href="https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170">https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170</a></p>
<div style="break-before: page; page-break-before: always;"></div><h1 id="mingw-w64下载"><a class="header" href="#mingw-w64下载">mingw-w64下载</a></h1>
<p>导航</p>
<p><a href="https://www.mingw-w64.org/downloads">https://www.mingw-w64.org/downloads</a></p>
<p>推荐！</p>
<p><a href="https://winlibs.com">https://winlibs.com</a></p>
<p>推荐！</p>
<p><a href="https://github.com/brechtsanders/winlibs_mingw/releases">https://github.com/brechtsanders/winlibs_mingw/releases</a></p>
<div style="break-before: page; page-break-before: always;"></div><h1 id="cmake"><a class="header" href="#cmake">Cmake</a></h1>
<p>官方文档</p>
<p><a href="https://cmake.org/documentation">https://cmake.org/documentation</a></p>
<p><a href="https://cmake.org/cmake/help/latest">https://cmake.org/cmake/help/latest</a></p>
<div style="break-before: page; page-break-before: always;"></div><h1 id="conan"><a class="header" href="#conan">Conan</a></h1>
<p><a href="https://conan.io">官网</a></p>
<p><a href="https://github.com/conan-io/conan">仓库地址</a></p>
<p><a href="https://github.com/conan-io/conan/tags">下载链接</a></p>
<p><a href="https://docs.conan.io/2/tutorial.html">官方教程</a></p>
<p><a href="https://conan.io/center">中央仓库</a></p>
<p>生成默认profile文件，名字为<code>default</code></p>
<p>--force 表示强制生成，即若原来有<code>default</code>会被覆盖</p>
<p>--name 表示指定生成名称</p>
<p>conan profile detect --force</p>
<p>conan profile detect --name &lt;指定名称&gt;</p>
<pre><code># 生成默认配置
conan profile detect

# mingw64
conan profile detect --name mingw64

#msvc2022
conan profile detect --name msvc2022

#msvc2019
conan profile detect --name msvc2019
</code></pre>
<p>mingw64配置</p>
<p>具体有哪些配置可以看C:/Users/Administrator/.conan2/settings.yml</p>
<pre><code>[settings]
arch=x86_64
build_type=Release
compiler=gcc
compiler.cppstd=11
compiler.libcxx=libstdc++11
os=Windows
compiler.version=14.2
compiler.threads=posix
</code></pre>
<p>查看名为<code>default</code>的profile文件的路径</p>
<p>conan profile path default</p>
<p>conan profile path &lt;名称&gt;</p>
<p>查看已经存在的eprofile</p>
<p>conan profile list</p>
<p>查看配置</p>
<p>conan config list</p>
<p>修改配置</p>
<p>C:/Users/Administrator.conan2/global.conf</p>
<pre><code># 依赖包存放路径
core.cache:storage_path=F:/ProgramFiles/conan/storage_path

# 没啥用
core.download:download_cache=F:/ProgramFiles/conan/download_cache
</code></pre>
<p>运行</p>
<pre><code># 真香警告 msvc
conan install . --output-folder=build --profile=msvc2022

cd build

cmake .. -G "Visual Studio 17 2022" -DCMAKE_TOOLCHAIN_FILE="conan_toolchain.cmake"

cmake --build . --config Release

# 真香警告 mingw64
conan install . --output-folder=build --profile=mingw64

cd build

cmake ..

cmake --build . --config Release


按需选择版本
cmake .. -G "Visual Studio 16 2019" -DCMAKE_TOOLCHAIN_FILE="conan_toolchain.cmake"

cmake .. -G "Visual Studio 15 2017" -DCMAKE_TOOLCHAIN_FILE="conan_toolchain.cmake"

cmake .. -G "Visual Studio 14 2015" -DCMAKE_TOOLCHAIN_FILE="conan_toolchain.cmake"

cmake .. -G "Visual Studio 12 2013" -DCMAKE_TOOLCHAIN_FILE="conan_toolchain.cmake"

cmake ..
</code></pre>
<div style="break-before: page; page-break-before: always;"></div><h1 id="vcpkg下载安装使用"><a class="header" href="#vcpkg下载安装使用">vcpkg下载安装使用</a></h1>
<p>下载安装</p>
<pre><code>//下载源代码
git clone https://github.com/microsoft/vcpkg.git

//运行安装脚本
bootstrap-vcpkg.bat
</code></pre>
<p>1、设置环境变量</p>
<p>VCPKG_FEATURE_FLAGS     =&gt;  versions</p>
<p>VCPKG_ROOT                        =&gt;  F:\ProgramFiles\vcpkg    #以实际安装地址为准</p>
<p>%VCPKG_ROOT%                  =&gt;  加入Path路径清单</p>
<p>2、指定依赖版本</p>
<p>vcpkg.json</p>
<p>{
"name": "hello",
"version-semver": "0.0.0",
"dependencies": [
"fmt"
],
"overrides": [
{
"name": "fmt",
"version": "9.1.0"
}
],
}</p>
<p>cmd运行</p>
<pre><code class="language-bash">vcpkg x-update-baseline --add-initial-baseline
</code></pre>
<p>查看 vcpkg.json, 发现自动添加了内容：</p>
<p>"builtin-baseline": "da21e45c9ae689f63aa27f3a4ee0e64fe6b16494"</p>
<p>3、Cmake配置</p>
<p>cmake_minimum_required(VERSION 3.12)</p>
<p>project(hello )</p>
<p>set(CMAKE_CXX_STANDARD 11)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
set(CMAKE_DEBUG_POSTFIX "_d")</p>
<p>find_package(fmt CONFIG REQUIRED)</p>
<p>add_executable(main main.cpp )</p>
<p>target_link_libraries(main PRIVATE fmt::fmt)</p>
<p>4、编译运行</p>
<p>export VCPKG_ROOT=F:/ProgramFiles/vcpkg       #以实际安装地址为准</p>
<p>cmake -B build -S . -DCMAKE_TOOLCHAIN_FILE=${VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake  -G "CodeBlocks - NMake  Makefiles"</p>
<p>cmake -B build -DCMAKE_TOOLCHAIN_FILE=F:/ProgramFiles/vcpkg/scripts/buildsystems/vcpkg.cmake  -G "CodeBlocks - NMake Makefiles"</p>
<p>cmake --build build</p>
<p>cd build</p>
<p>运行exe</p>
<div style="break-before: page; page-break-before: always;"></div><h1 id="boost下载安装配置"><a class="header" href="#boost下载安装配置">Boost下载安装配置</a></h1>
<h2 id="下载"><a class="header" href="#下载">下载</a></h2>
<p>官网</p>
<p><a href="https://www.boost.org">https://www.boost.org</a></p>
<p>历史版本</p>
<p><a href="https://www.boost.org/users/history">https://www.boost.org/users/history</a></p>
<p>直接下载二进制包</p>
<p><a href="https://sourceforge.net/projects/boost/files/boost-binaries/1.78.0/boost_1_78_0-msvc-14.3-64.exe/download">https://sourceforge.net/projects/boost/files/boost-binaries/1.78.0/boost_1_78_0-msvc-14.3-64.exe/download</a></p>
<h2 id="安装"><a class="header" href="#安装">安装</a></h2>
<p>下载解压完成后有个bootstrap.bat文件，双击执行，会生成一个b2.exe文件；不行的话进到cmd里面，然后进到这个目录下输入bootstrap.bat运行也可以</p>
<p>一顿操作！</p>
<p>然后在cmd中输入（注意这里msvc-14.2指的是vs2019编译器，--prefix后面的路径是生成.h和.lib的放置路径）</p>
<pre><code>b2.exe install  --toolset=msvc  --address-model=64 --build-type=complete --prefix=D:/ProgramFiles/boost_1.78.0  link=static  runtime-link=shared  threading=multi  debug  release
</code></pre>
<p>--prefix=DIR 安装路径</p>
<p>--toolset=msvc  编译器类别，可以是gcc，或者是msvc</p>
<p>--target-os=Windows  目标操作系统，可以是Windows,Linux</p>
<p>--variant=release  生成类型，可以是 debug（-gd-）或者release (-)</p>
<p>--threadapi=win32  线程API的实现，可以是win32或者pthread,在windows上编译就用win32</p>
<p>--address-model=64  生成64位的库. 不写该参数, 则默认为生成32位的链接库，该参数可选的参数取值为:  "16" "32" "64" "32_64"</p>
<p>--link=static  链接库类型，可以是静态的static，也可以是shared，对应windows上的库就是.lib或者是dll</p>
<p>--runtime-link=static  动态还是静态链接C/C++运行时库。同样有shared (-)和static (-s-)两种方式，这样runtime-link和link可以产生4种组合方式，可以根据需要选择编译.</p>
<p>然后添加环境变量</p>
<p>BOOST_ROOT  首选！！！</p>
<p>BOOST_INCLUDEDIR</p>
<p>BOOST_LIBRARYDIR</p>
<div style="break-before: page; page-break-before: always;"></div><h1 id="解决clion--msvc-下的字符编码问题"><a class="header" href="#解决clion--msvc-下的字符编码问题">解决CLion + MSVC 下的字符编码问题</a></h1>
<h2 id="问题描述"><a class="header" href="#问题描述">问题描述</a></h2>
<p>warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
然后就是诡异的编译失败语法错误，比如换行符、分号等等</p>
<p>原因是 CLion 默认使用 UTF-8 编码，MSVC 继承了 MS 家族的一贯传统，除非明确指定否则要么 UTF-8 with BOM 要么当前代码页。</p>
<h2 id="解决方法"><a class="header" href="#解决方法">解决方法</a></h2>
<p>解决办法也简单，加上命令行开关就行了： \utf-8 或者 source-charset:utf-8 /execution-charset:utf-8  参见MSVC文档&gt;&gt;</p>
<p>默认创建的项目是 CMake 的，在 CMakeList.txt 中加入如下内容即可</p>
<pre><code class="language-cmake">add_compile_options("$&lt;$&lt;C_COMPILER_ID:MSVC&gt;:/utf-8&gt;")
add_compile_options("$&lt;$&lt;CXX_COMPILER_ID:MSVC&gt;:/utf-8&gt;")
</code></pre>
<p>括号中表达式语法具体参见  cmake-generator-expressions(7)
https://cmake.org/cmake/help/latest/manual/cmake-generator-expressions.7.html#manual:cmake-generator-expressions(7)</p>
<pre><code class="language-cmake">#add_compile_options("$&lt;$&lt;C_COMPILER_ID:MSVC&gt;:/utf-8&gt;")
#add_compile_options("$&lt;$&lt;CXX_COMPILER_ID:MSVC&gt;:/utf-8&gt;")
</code></pre>
<p>必须位于 add_executable（……） 之前</p>
<p>或者CMake options设置
-D CMAKE_CXX_FLAGS="/utf-8"</p>
<div style="break-before: page; page-break-before: always;"></div><h1 id="mysql源码编译教程"><a class="header" href="#mysql源码编译教程">MySQL源码编译教程</a></h1>
<h2 id="编译环境"><a class="header" href="#编译环境">编译环境</a></h2>
<h3 id="visual-studio-2019"><a class="header" href="#visual-studio-2019">visual studio 2019</a></h3>
<h3 id="cmkake-313注意版本为了支持vs2013"><a class="header" href="#cmkake-313注意版本为了支持vs2013">cmkake 3.1.3（注意版本，为了支持vs2013）</a></h3>
<p><a href="https://cmake.org/files">https://cmake.org/files</a></p>
<p><a href="https://cmake.org/download/">https://cmake.org/download</a></p>
<h3 id="bison-241"><a class="header" href="#bison-241">bison 2.4.1</a></h3>
<p><a href="https://nchc.dl.sourceforge.net/project/gnuwin32/bison/2.4.1/bison-2.4.1-setup.exe">https://nchc.dl.sourceforge.net/project/gnuwin32/bison/2.4.1/bison-2.4.1-setup.exe</a></p>
<p>bison安装路径不允许有空格</p>
<p>把系统变量Path添加</p>
<p>D:\ProgramData\GnuWin32\bin</p>
<h3 id="openssl-win64-openssl"><a class="header" href="#openssl-win64-openssl">openssl Win64 OpenSSL</a></h3>
<p>我选的是Win64 OpenSSL v3.2.1 200MB Installer</p>
<p>因为里面写着Recommended for software developers by the creators of OpenSSL</p>
<p><a href="http://slproweb.com/products/Win32OpenSSL.html">http://slproweb.com/products/Win32OpenSSL.html</a></p>
<p>在系统变量Path中添加</p>
<p>C:\Program Files\OpenSSL-Win64\bin</p>
<p>C:\Program Files\OpenSSL-Win64\lib\VC\x64\MD</p>
<p>在用户变量中添加如下三个变量：</p>
<p>OPENSSL_CRYPTO_LIBRARY：C:\Program Files\OpenSSL-Win64\lib</p>
<p>OPENSSL_INCLUDE_DIR：C:\Program Files\OpenSSL-Win64\include</p>
<p>OPENSSL_ROOT_DIR：C:\Program Files\OpenSSL-Win64</p>
<h3 id="mysql-5743"><a class="header" href="#mysql-5743">MySQL 5.7.43</a></h3>
<p>选择含boost的源码版本mysql-boost-5.7.43.tar.gz</p>
<p><a href="https://downloads.mysql.com/archives/community">https://downloads.mysql.com/archives/community</a></p>
<h2 id="安装cmakebison"><a class="header" href="#安装cmakebison">安装cmake、bison</a></h2>
<p>安装cmake、bison注意可能需要把cmake和bison的bin目录添加到Path环境变量中</p>
<p>注意：bison 2.1以上版本</p>
<pre><code>bison --version

cmake --version
</code></pre>
<h2 id="准备mysql源码"><a class="header" href="#准备mysql源码">准备MySQL源码</a></h2>
<p>用记事本打开 mysql-5.6.23\sql\sql_locale.cc 文件，将其以 utf-8进行另存，并用另存后的 sql_locale.cc 文件替换 mysql-5.6.17\sql\sql_locale.cc</p>
<p>编辑 mysql-5.6.23\sql\mysqld.cc 文件，注释掉函数 test_lc_time_sz 中，DBUG_ASSERT(0); 语句</p>
<h2 id="编译"><a class="header" href="#编译">编译</a></h2>
<p>工程目录结构</p>
<p>D:\Program Files\mysql-boost-5.7.43</p>
<p>├── build                          // 自己创建的cmake工程目录
├── mysql-5.7.43            // mysql源码目录
├──CMakeLists.txt   // 在mysql-5.7.43目录下有Cmake工程配置文件，故第1步使用"cmake ../mysql-5.7.43 ..."</p>
<pre><code>//MySQL编译操作
//第1步，生成cmake工程文件
cmake ../mysql-5.7.43  -DWITH_BOOST="D:\Program Files\mysql-boost-5.7.43\mysql-5.7.43\boost\boost_1_59_0" -DWITH_DEBUG=1 -DWITHOUT_SERVER=on -DCMAKE_INSTALL_PREFIX=d:\compile_ouput\mysql

//第2步，开始编译
cmake --build . --config Release --target install
</code></pre>
<p>编译参数说明</p>
<p>-DWITHOUT_SERVER=on：不编译mysql server</p>
<p>-DCMAKE_INSTALL_PREFIX：目标安装目录</p>
<h2 id="参考文献"><a class="header" href="#参考文献">参考文献</a></h2>
<ul>
<li><a href="http://www.mysql.com/support/supportedplatforms/database.html">http://www.mysql.com/support/supportedplatforms/database.html</a></li>
<li><a href="https://www.cnblogs.com/wsk3q/p/16535271.html">https://www.cnblogs.com/wsk3q/p/16535271.html</a></li>
<li><a href="https://blog.csdn.net/qq_34571801/article/details/125703640">https://blog.csdn.net/qq_34571801/article/details/125703640</a></li>
</ul>
<div style="break-before: page; page-break-before: always;"></div><h1 id="clang安装下载"><a class="header" href="#clang安装下载">Clang安装下载</a></h1>
<p><a href="https://releases.llvm.org/download.html">https://releases.llvm.org/download.html</a></p>
<div style="break-before: page; page-break-before: always;"></div><h1 id="rust下载安装配置"><a class="header" href="#rust下载安装配置">Rust下载安装配置</a></h1>
<h2 id="下载-1"><a class="header" href="#下载-1">下载</a></h2>
<h3 id="编译器下载"><a class="header" href="#编译器下载">编译器下载</a></h3>
<p>Rust中文官网</p>
<p><a href="https://www.rust-lang.org/zh-CN">https://www.rust-lang.org/zh-CN</a></p>
<p>开发工具下载</p>
<p><a href="https://www.rust-lang.org/tools/install">https://www.rust-lang.org/tools/install</a></p>
<p>其他安装方式（离线开发环境建议下载离线版rust编译器安装包+msvc编译器）</p>
<p><a href="https://forge.rust-lang.org/infra/other-installation-methods.html">https://forge.rust-lang.org/infra/other-installation-methods.html</a></p>
<p>或者离线版rust编译器+mingw编译器</p>
<p>（1）rust-1.61.0-i686-pc-windows-gnu.msi（支持32位windows系统）</p>
<p>（2）i686-8.1.0-release-posix-dwarf-rt_v6-rev0.7z（mingw32位g++编译器）</p>
<p>mingw-w64下载</p>
<p><a href="https://www.mingw-w64.org/downloads">https://www.mingw-w64.org/downloads</a> 导航</p>
<p><a href="https://winlibs.com">https://winlibs.com</a> 推荐！</p>
<p><a href="https://github.com/brechtsanders/winlibs_mingw/releases">https://github.com/brechtsanders/winlibs_mingw/releases</a> 推荐！</p>
<h3 id="加速配置"><a class="header" href="#加速配置">加速配置</a></h3>
<p>设置环境变量 RUSTUP_DIST_SERVER （用于更新 toolchain）：
export RUSTUP_DIST_SERVER=https://mirrors.ustc.edu.cn/rust-static</p>
<p>RUSTUP_UPDATE_ROOT （用于更新 rustup）：
export RUSTUP_UPDATE_ROOT=https://mirrors.ustc.edu.cn/rust-static/rustup</p>
<p>设置crates-io-index镜像源</p>
<p>export CARGO_REGISTRIES_CRATES_IO_INDEX=http://mirrors.ustc.edu.cn/crates.io-index</p>
<p>export CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse</p>
<p>Rust 提供两种协议来访问 crate 的索引：git 和 sparse，分别适用于不同场景。你可以通过设置 CARGO_REGISTRIES_CRATES_IO_PROTOCOL 来指定使用的协议：</p>
<p>git：通过 Git 拉取索引（传统方式）。</p>
<p>sparse：通过 HTTP 拉取索引（更快，推荐）。</p>
<h3 id="rust标准库源码下载"><a class="header" href="#rust标准库源码下载">Rust标准库源码下载</a></h3>
<p><a href="https://github.com/rust-lang/rust">https://github.com/rust-lang/rust</a></p>
<p>节约硬盘空间</p>
<p>可以移动<code>.cargo</code>和<code>.rustup</code>目录，并相应地设置<code>RUSTUP_HOME</code>和<code>CARGO_HOME</code>。</p>
<p>还需要根据.cargo/bin的地址调整系统变量<code>PATH</code>。</p>
<p>安装历史版本</p>
<p>先查看几月几日发布了某个版本</p>
<p><a href="https://blog.rust-lang.org">https://blog.rust-lang.org</a></p>
<p>或者编译器更新官方日志</p>
<p><a href="https://github.com/rust-lang/rust/blob/master/RELEASES.md">https://github.com/rust-lang/rust/blob/master/RELEASES.md</a></p>
<p>然后根据stable版本发布日期倒推算出nightly版本日期，前一天即可</p>
<pre><code>// win7绝响！！！
rustup  toolchain install nightly-2024-02-20-x86_64-pc-windows-msvc --profile minimal
rustup  toolchain install nightly-2024-02-20-x86_64-pc-windows-gnu  --profile minimal

rustup default nightly-2024-02-20-x86_64-pc-windows-msvc

rustup target install wasm32-unknown-unknown

cargo install wasm-server-runner
cargo install wasm-bindgen-cli
</code></pre>
<p>查看编译工具链类型</p>
<p><a href="https://forge.rust-lang.org/infra/other-installation-methods.html">https://forge.rust-lang.org/infra/other-installation-methods.html</a></p>
<h2 id="rustup操作"><a class="header" href="#rustup操作">Rustup操作</a></h2>
<h3 id="更新"><a class="header" href="#更新">更新</a></h3>
<pre><code>rustup update
</code></pre>
<h3 id="更新指定版本"><a class="header" href="#更新指定版本">更新指定版本</a></h3>
<pre><code>rustup update stable
rustup update nightly
</code></pre>
<h3 id="切换版本"><a class="header" href="#切换版本">切换版本</a></h3>
<pre><code>rustup override set nightly
</code></pre>
<h3 id="添加night版本"><a class="header" href="#添加night版本">添加night版本</a></h3>
<pre><code>rustup toolchain install nightly
</code></pre>
<h3 id="设置默认版本"><a class="header" href="#设置默认版本">设置默认版本</a></h3>
<pre><code>rustup default stable

rustup default unstable

//查看现在默认的编译器版本
rustup show
</code></pre>
<h3 id="一顿连招"><a class="header" href="#一顿连招">一顿连招</a></h3>
<pre><code>//更改默认的host（即编译目标）
rustup set default-host x86_64-pc-windows-msvc

//安装core、alloc、std库源码
rustup component add rust-src --toolchain stable-x86_64-pc-windows-msvc

//用于编译wasm，你懂的
rustup target install wasm32-unknown-unknown

//交叉编译
rustup target add x86_64-pc-windows-msvc
rustup target add i686-pc-windows-msvc

//用于开发android
rustup target add aarch64-linux-android

rustup toolchain install stable-i686-pc-windows-msvc --profile minimal
rustup toolchain install nightly-i686-pc-windows-msvc --profile minimal
rustup toolchain install stable-x86_64-pc-windows-msvc --profile minimal
rustup toolchain install nightly-x86_64-pc-windows-msvc --profile minimal

rustup default stable-x86_64-pc-windows-msvc

//添加rust官方库html文档
rustup component add --toolchain stable-x86_64-pc-windows-msvc rust-docs

//按需
//rustup component add --toolchain stable-i686-pc-windows-msvc rust-docs
//rustup component add --toolchain nightly-i686-pc-windows-msvc rust-docs
//rustup component add --toolchain nightly-x86_64-pc-windows-msvc rust-docs

//一顿更新
rustup update

//安装代码格式化插件
rustup component add rustfmt

//clippy工具是一系列lint的集合,用于捕捉常见错误和改进 Rust代码
rustup component add clippy-preview
</code></pre>
<h3 id="mingw编译器型号说明"><a class="header" href="#mingw编译器型号说明">mingw编译器型号说明</a></h3>
<p>型号列表</p>
<p>x86_64:代表64位系统运行（电脑操作系统）</p>
<p>x86_win32:代表32位系统运行（电脑操作系统）</p>
<p>x86_64-posix-sjlj</p>
<p>x86_64-posix-seh</p>
<p>x86_64-win32-sjlj</p>
<p>x86_64-win32-seh</p>
<p>i686-posix-sjlj</p>
<p>i686-posix-dwarf</p>
<p>i686-win32-sjlj</p>
<p>i686-win32-dwarf</p>
<p>释义1：</p>
<p>DWARF：一种带调试信息(DWARF- 2（DW2）EH)的包, 所以比一般的包尺寸大，仅支持32位系统</p>
<p>SJLJ：跨平台，支持32，64位系统，缺点是：运行速度稍慢，GCC不支持</p>
<p>SEH: 调用系统机制处理异常，支持32，64位系统，缺点是：Gcc不支持（即将支持）</p>
<p>释义2：</p>
<p>x86_64: 简称X64，64位操作系统</p>
<p>i686: 32位操作系统 (i386的子集)，差不多奔腾2(1997年5月)之后的CPU都是可以用的；</p>
<p>释义3：</p>
<p>posix: 启用了C++ 11 多线程特性</p>
<p>win32: 未启用 （从时间线上正在尝试也启用部分 Threading）</p>
<p>区别</p>
<p>DWARF DWARF- 2（DW2）EH ，这需要使用DWARF-2（或DWARF-3）调试信息。 DW-2 EH可以导致可执行文件略显膨胀，因为大的调用堆栈解开表必须包含在可执行文件中。</p>
<p>setjmp / longjmp（SJLJ）。基于SJLJ的EH比DW2 EH慢得多（在没有异常时会惩罚甚至正常执行），但是可以在没有使用GCC编译的代码或没有调用堆栈的代码上工作。</p>
<p>结构化异常处理（SEH） （Structured Exception Handling）Windows使用自己的异常处理机制。</p>
<p>3、clion下载及安装（不解释）</p>
<h2 id="configtoml配置"><a class="header" href="#configtoml配置">config.toml配置</a></h2>
<pre><code>[source.crates-io]

registry = "https://github.com/rust-lang/crates.io-index"

replace-with = 'ustc'

#replace-with ='sjtu'

#replace-with = 'local-registry'

#中国科学技术大学

[source.ustc]

registry = "https://mirrors.ustc.edu.cn/crates.io-index"

#上海交通大学

[source.sjtu]

registry="https://mirrors.sjtug.sjtu.edu.cn/git/crates.io-index/"

#清华大学

[source.tuna]

registry = "https://mirrors.tuna.tsinghua.edu.cn/git/crates.io-index.git"

#本地仓库地址

[source.local-registry]

local-registry = 'C:/Users/Administrator/.cargo/local-registry/'

[build]

#启用静态编译，仅用于windows

rustflags = ["-C", "target-feature=+crt-static"]

#节约硬盘空间

target-dir = "D:/rust-target"

#设置为从git拉取。git不会被墙。

[net]

git-fetch-with-cli=true

#用于解决报错Caused by: [35]SSL connect error

[http]

check-revoke = false
</code></pre>
<h2 id="cargo-local-registry可下载依赖离线使用"><a class="header" href="#cargo-local-registry可下载依赖离线使用">cargo-local-registry（可下载依赖离线使用）</a></h2>
<h3 id="安装-1"><a class="header" href="#安装-1">安装</a></h3>
<p>generate local registry</p>
<p>cargo install cargo-local-registry</p>
<p>cargo local-registry --sync <path of Cargo.toml> <path of local registory></p>
<h3 id="使用"><a class="header" href="#使用">使用</a></h3>
<h4 id="下载依赖"><a class="header" href="#下载依赖">下载依赖</a></h4>
<p>cargo local-registry --sync 222</p>
<p>"C:/Program Files (x86)/Rust nightly MSVC 1.68/bin/cargo.exe"  local-registry --sync Cargo.toml  local-registry</p>
<p>pause</p>
<h4 id="增量下载依赖"><a class="header" href="#增量下载依赖">增量下载依赖</a></h4>
<p>"C:/Program Files (x86)/Rust nightly MSVC 1.68/bin/cargo.exe"  local-registry --sync Cargo.toml  --no-delete C:/Users/Administrator/.cargo/local-registry</p>
<h2 id="vs-code及插件"><a class="header" href="#vs-code及插件">VS Code及插件</a></h2>
<h3 id="vs-code下载"><a class="header" href="#vs-code下载">VS Code下载</a></h3>
<p><a href="https://code.visualstudio.com/">https://code.visualstudio.com</a></p>
<h3 id="vs-code-插件下载"><a class="header" href="#vs-code-插件下载">VS Code 插件下载</a></h3>
<p><a href="https://marketplace.visualstudio.com/vscode">https://marketplace.visualstudio.com/vscode</a></p>
<h4 id="rust-analyzer"><a class="header" href="#rust-analyzer">rust-analyzer</a></h4>
<p><a href="https://marketplace.visualstudio.com/items?itemName=rust-lang.rust-analyzer">https://marketplace.visualstudio.com/items?itemName=rust-lang.rust-analyzer</a></p>
<p>rust-analyzer：它会实时编译和分析你的 Rust 代码，提示代码中的错误，并对类型进行标注。</p>
<h4 id="even-better-toml"><a class="header" href="#even-better-toml">even-better-toml</a></h4>
<p><a href="https://marketplace.visualstudio.com/items?itemName=tamasfe.even-better-toml">https://marketplace.visualstudio.com/items?itemName=tamasfe.even-better-toml</a></p>
<p>even-better-toml：Rust 使用 toml 做项目的配置管理</p>
<h4 id="rust-syntax"><a class="header" href="#rust-syntax">rust-syntax</a></h4>
<p><a href="https://marketplace.visualstudio.com/items?itemName=dustypomerleau.rust-syntax">https://marketplace.visualstudio.com/items?itemName=dustypomerleau.rust-syntax</a></p>
<p>rust syntax：为代码提供语法高亮</p>
<h4 id="rust-test-lens"><a class="header" href="#rust-test-lens">rust test lens</a></h4>
<p><a href="https://marketplace.visualstudio.com/items?itemName=hdevalke.rust-test-lens">https://marketplace.visualstudio.com/items?itemName=hdevalke.rust-test-lens</a></p>
<p>rust test lens：可以帮你快速运行某个 Rust 测试</p>
<h4 id="crates"><a class="header" href="#crates">crates</a></h4>
<p><a href="https://marketplace.visualstudio.com/items?itemName=serayuzgur.crates">https://marketplace.visualstudio.com/items?itemName=serayuzgur.crates</a></p>
<p>crates 帮助你分析当前项目的依赖是否是最新的版本</p>
<h4 id="cpptools"><a class="header" href="#cpptools">cpptools</a></h4>
<p><a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools">https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools</a></p>
<p>用于调试代码</p>
<h4 id="调试插件"><a class="header" href="#调试插件">调试插件</a></h4>
<p>如何调试</p>
<p><a href="https://blog.csdn.net/uddiqpl/article/details/108558712">https://blog.csdn.net/uddiqpl/article/details/108558712</a></p>
<p>windows</p>
<p><a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools">https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools</a></p>
<p>linux</p>
<p><a href="https://marketplace.visualstudio.com/items?itemName=vadimcn.vscode-lldb">https://marketplace.visualstudio.com/items?itemName=vadimcn.vscode-lldb</a></p>
<p>点击 调试 -&gt; 添加配置</p>
<p>如果你使用的是 Windows，选择 C++ (Windows)</p>
<p>如果你使用的是 Mac/Linux，选择 LLDB: Custom Launch</p>
<p>添加配置应该会创建并打开启动配置文件 launch.json。 你必须手动修改配置项 "program" 对应的可执行文件名称。</p>
<pre><code>{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(Windows) Launch",
            "type": "cppvsdbg",
            "request": "launch",
            "program": "${workspaceRoot}/target/debug/foo.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceRoot}",
            "environment": [],
            "externalConsole": true
        },
        {
            "name": "(OSX) Launch",
            "type": "lldb",
            "request": "launch",
            "program": "${workspaceRoot}/target/debug/foo",
            "args": [],
            "cwd": "${workspaceRoot}",
        }
    ]
}
</code></pre>
<h2 id="发布rust源码包"><a class="header" href="#发布rust源码包">发布rust源码包</a></h2>
<h3 id="cargotoml信息确认"><a class="header" href="#cargotoml信息确认">Cargo.toml信息确认</a></h3>
<p>authors 作者</p>
<p>description 源码包的描述, 比较简短 (可以使用中文)</p>
<p>repository 对应源代码仓库的 URL</p>
<p>keywords 关键词</p>
<p>categories 源码包所属的分类 最多 5 个, 只能从这个列表中选择: https://crates.io/category_slugs</p>
<p>除了 <strong>Cargo.toml</strong> 文件, 还要检查一下 <strong>README.md</strong> 文件, 这个是项目的说明文件, 别人点进去首先看到的东西.</p>
<p>最后使用命令 <code>cargo doc</code> 编译一下文档, 在本地先看看文档是否还需要补充</p>
<h3 id="登录"><a class="header" href="#登录">登录</a></h3>
<pre><code class="language-bash">//把登录的token黏贴进去
cargo login --registry crates-io
</code></pre>
<h3 id="发布"><a class="header" href="#发布">发布</a></h3>
<pre><code>cargo publish --registry crates-io --allow-dirty
</code></pre>
<div style="break-before: page; page-break-before: always;"></div><h1 id="rust优秀项目"><a class="header" href="#rust优秀项目">Rust优秀项目</a></h1>
<h2 id="序列化反序列化"><a class="header" href="#序列化反序列化">序列化/反序列化</a></h2>
<p><a href="https://github.com/serde-rs/serde">serde</a> 序列化/反序列化库</p>
<p><a href="https://github.com/serde-rs/json">serde_json</a> 序列化/反序列化库</p>
<p><a href="https://github.com/rkyv/rkyv">rkyv</a> 零拷贝序列化/反序列化库</p>
<p><a href="https://github.com/tokio-rs/prost">prost</a> protobuf库</p>
<p><a href="https://github.com/bincode-org/bincode">bincode</a> 序列化/反序列化库</p>
<p><a href="https://github.com/jean-airoldie/humantime-serde">humantime-serde</a> 人类可读的序列化/反序列化库</p>
<p><a href="https://github.com/google/flatbuffers">flatbuffers</a> 适用于游戏的序列化/反序列化库</p>
<h2 id="异步"><a class="header" href="#异步">异步</a></h2>
<p><a href="https://github.com/tokio-rs/tokio">tokio</a> 异步协程库</p>
<p><a href="https://github.com/Xudong-Huang/may">may</a> 有栈异步协程库</p>
<p><a href="https://github.com/smol-rs/smol">smol</a> 异步协程库</p>
<p><a href="https://github.com/async-rs/async-std">async-std</a> 异步协程库</p>
<p><a href="https://github.com/DataDog/glommio">glommio</a> 异步协程库</p>
<p><a href="https://github.com/bytedance/monoio">monoio</a> 异步协程库</p>
<p><a href="https://github.com/compio-rs/compio">compio</a> proactor异步协程库</p>
<h2 id="并发"><a class="header" href="#并发">并发</a></h2>
<p><a href="https://github.com/crossbeam-rs/crossbeam">crossbeam</a> 并发容器</p>
<p><a href="https://github.com/rayon-rs/rayon">rayon</a> 并发迭代器</p>
<p><a href="https://github.com/Amanieu/parking_lot">parking_lot</a> 并发原语</p>
<h2 id="web开发"><a class="header" href="#web开发">Web开发</a></h2>
<p><a href="https://github.com/hyperium/hyper">hyper </a> 异步Http底层库</p>
<p><a href="https://github.com/tokio-rs/axum">axum</a> 异步Http库</p>
<p><a href="https://github.com/actix/actix-web">actix-web</a> 异步Http库</p>
<p><a href="https://github.com/rwf2/Rocket">rocket</a> 异步Http库</p>
<p><a href="https://github.com/dakai-chen/boluo">boluo</a> 简洁的异步网络库</p>
<p><a href="https://github.com/tower-rs/tower">tower</a> http库</p>
<p><a href="https://github.com/tower-rs/tower-http">tower-http</a> http库</p>
<h2 id="sqlorm"><a class="header" href="#sqlorm">SQL/ORM</a></h2>
<p><a href="https://github.com/launchbadge/sqlx">launchbadge/sqlx</a> 异步SQL操作，支持MySQL、Sqlite、ProgresSQL</p>
<p><a href="https://github.com/SeaQL/sea-orm">sea-orm</a> 异步ORM框架，支持MySQL、Sqlite、ProgresSQL</p>
<p><a href="https://github.com/SeaQL/sea-query">sea-query</a> sea-orm底层驱动</p>
<p><a href="https://github.com/diesel-rs/diesel">diesel</a> ORM框架，支持MySQL、Sqlite、ProgresSQL</p>
<p><a href="https://github.com/weiznich/diesel_async">diesel-async</a> diesel的异步实现</p>
<p><a href="https://github.com/sfackler/r2d2">r2d2</a> 数据库连接池</p>
<p><a href="https://github.com/deadpool-rs/deadpool">deadpool</a> 异步数据库连接池</p>
<h2 id="爬虫"><a class="header" href="#爬虫">爬虫</a></h2>
<p><a href="https://github.com/causal-agent/scraper">scraper</a> 解析html文件</p>
<p><a href="https://github.com/mattsse/chromiumoxide">chromiumoxide</a> 调用chrome爬虫</p>
<p><a href="https://github.com/spider-rs/spider">spider_chrome</a> 调用chrome爬虫</p>
<p><a href="https://github.com/Vrtgs/thirtyfour">thirtyfour</a> 调用浏览器爬虫，支持谷歌、火狐</p>
<p><a href="https://github.com/seanmonstar/reqwest">reqwest</a> http请求库</p>
<p><a href="https://github.com/algesten/ureq">ureq</a> http请求库</p>
<h2 id="日志"><a class="header" href="#日志">日志</a></h2>
<p><a href="https://github.com/tokio-rs/tracing">tracing</a> 结构化日志和跟踪。</p>
<p><a href="https://github.com/rbatis/fast_log">fast_log</a> 日志</p>
<p><a href="https://github.com/rust-cli/env_logger">env_logger</a> 日志</p>
<p><a href="https://github.com/donnie4w/tklog">tklog </a>日志</p>
<p><a href="https://github.com/tikv/rust-prometheus">prometheus</a> 监控指标</p>
<h2 id="工具"><a class="header" href="#工具">工具</a></h2>
<p><a href="https://github.com/dtolnay/thiserror">thiserror</a> 框架代码错误处理库</p>
<p><a href="https://github.com/dtolnay/anyhow">anyhow</a> 业务代码错误处理库</p>
<p><a href="https://github.com/shepmaster/snafu">snafu</a> 强大的错误处理库</p>
<p><a href="https://github.com/rust-itertools/itertools">itertools</a> 迭代器增强库</p>
<p><a href="https://github.com/google/argh">argh</a> cli开发库</p>
<p><a href="https://github.com/clap-rs/clap">clap</a> cli开发库</p>
<p><a href="https://github.com/tokio-rs/bytes">bytes</a> 字节处理库</p>
<p><a href="https://github.com/rust-random/rand">rand</a> 随机数</p>
<p><a href="https://github.com/uuid-rs/uuid">uuid</a> 支持 UUID 生成和解析</p>
<p><a href="https://github.com/chronotope/chrono">chrono</a> 日期时间处理</p>
<p><a href="https://github.com/chronotope/chrono-tz">chrono-tz</a> 时区处理</p>
<p><a href="https://github.com/JelteF/derive_more">derive_more</a> 派生宏实现各种trait</p>
<p><a href="https://github.com/nrc/derive-new">derive-new</a> 派生宏简化结构体初始化函数</p>
<p><a href="https://github.com/elastio/bon">bon</a> 通过宏简化结构体初始化函数和函数调用</p>
<p><a href="https://github.com/mcarton/rust-derivative">derivative</a> 自定义派生的 trait 实现</p>
<p><a href="https://github.com/rust-lang/rustc-hash">rustc-hash</a> 非加密的高效哈希</p>
<p><a href="https://github.com/mitsuhiko/sha1-smol">sha1_smol</a> 非加密的高效哈希</p>
<p><a href="https://github.com/tikv/jemallocator">tikv-jemallocator</a> 用于优化内存分配</p>
<p><a href="https://github.com/image-rs/image">image</a> 图像处理</p>
<p><a href="https://github.com/rust-lang-nursery/lazy-static.rs">lazy_static</a> 全局变量</p>
<p><a href="https://github.com/matklad/once_cell">once_cell</a></p>
<p><a href="https://github.com/dtolnay/async-trait">async-trait</a> 异步trait增强库</p>
<p><a href="https://github.com/nashaofu/xcap">xcap</a> 跨平台截图</p>
<p><a href="https://github.com/ostrosco/device_query">device_query</a> 后台获取键盘事件</p>
<h2 id="数据分析机器学习"><a class="header" href="#数据分析机器学习">数据分析/机器学习</a></h2>
<p><a href="https://github.com/rust-ndarray/ndarray">ndarray</a> 数组和线性代数</p>
<p><a href="https://github.com/dimforge/nalgebra">nalgebra</a> 数组和线性代数</p>
<p><a href="https://github.com/rust-ndarray/ndarray-linalg">ndarray-linalg</a> 数组和线性代数算法库</p>
<p><a href="https://github.com/rust-random/rand">rand_distr</a> 随机库</p>
<p><a href="https://github.com/starkat99/half-rs">half</a> 支持 f16 类型</p>
<p><a href="https://github.com/brendanzab/approx">approx</a> 浮点数近似比较</p>
<p><a href="https://github.com/pykeio/ort">ort</a> ONNX 运行时，用于机器学习推理</p>
<p><a href="https://github.com/statrs-dev/statrs">statrs</a> 统计学函数库，提供常见概率分布（正态、泊松等）和统计工具</p>
<p><a href="https://github.com/rust-ml/linfa">linfa</a> 类似 Python 的 scikit-learn，提供分类、回归、聚类（如 SVM、K-Means）等算法</p>
<p><a href="https://github.com/smartcorelib/smartcore">smartcore</a> 轻量级机器学习库，包含基础算法（线性回归、决策树等）</p>
<p><a href="https://github.com/LaurentMazare/tch-rs">tch</a> PyTorch 的 Rust 绑定，可直接调用 PyTorch 的 GPU 加速和自动微分功能</p>
<p><a href="https://github.com/tracel-ai/burn">burn</a> 新兴的深度学习框架，支持动态计算图、多种后端（CPU/GPU）</p>
<p><a href="https://github.com/raskr/rust-autograd">autograd</a> 轻量级自动微分库，适合手动构建模型（如自定义神经网络）</p>
<p><a href="https://github.com/pola-rs/polars">polars</a> 高性能 DataFrame 库（类似 pandas），适合数据清洗和预处理</p>
<p><a href="https://github.com/tensorflow/rust">tensorflow</a> tensorflow的Rust绑定</p>
<h2 id="数据库"><a class="header" href="#数据库">数据库</a></h2>
<p><a href="https://github.com/PoloDB/PoloDB">PoloDB</a> 嵌入式数据库，类似Mongodb</p>
<p><a href="https://github.com/agnesoft/agdb">agdb</a> 图数据库</p>
<p><a href="https://github.com/tursodatabase/limbo">limbo</a> 基于异步模型的轻量级嵌入式数据库，兼容Sqlite</p>
<h2 id="操作系统"><a class="header" href="#操作系统">操作系统</a></h2>
<p>待添加</p>
<h2 id="测试性能对比"><a class="header" href="#测试性能对比">测试/性能对比</a></h2>
<p><a href="https://github.com/bheisler/criterion.rs">criterion</a> 测试框架</p>
<p><a href="https://github.com/Canop/bacon">bacon</a> 后台代码编译检测工具</p>
<p><a href="https://github.com/la10736/rstest">rstest</a> 参数化测试和 fixtures</p>
<h2 id="脚本语言"><a class="header" href="#脚本语言">脚本语言</a></h2>
<p><a href="https://github.com/rhaiscript/rhai">rhai</a> 嵌入式脚本语言</p>
<div style="break-before: page; page-break-before: always;"></div><h1 id="cargo常用软件安装"><a class="header" href="#cargo常用软件安装">Cargo常用软件安装</a></h1>
<p>常用命令</p>
<pre><code>// cargo watch 命令
cargo watch -c -x "build" -x "run --bin xxbin"

// 查看某个依赖关系
cargo tree -i ntapi

// 强制升级某个包升级到指定版本
cargo update -p wasm-bindgen --precise 0.2.95

// 强制升级某个特定版本的包升级到指定版本
cargo update -p ahash@0.8.6 --precise 0.8.7

cargo update -p serde --precise 1.0.195

// 重置所有依赖到最低版本，不错不错！！！
cargo update -Z minimal-versions

// 重置某个依赖到最低版本，不错不错！！！
cargo update -p proc-macro2 -Z minimal-versions

// 强制重置依赖版本，其他依赖也升级
cargo update -p wgpu-hal --aggressive

// wasm大法
cargo run --target wasm32-unknown-unknown

// wasm打包输出
wasm-bindgen --out-dir ./out/ --target web battle-city.wasm
</code></pre>
<p>一顿安装</p>
<pre><code class="language-rg">// 快速编译链接器
cargo install cargo-binutils

// 跨平台编译工具链
cargo install cargo-zigbuild

// 展开Rust宏代码并输出结果到标准输出
cargo install cargo-expand

// Rust代码检查器
cargo install bacon

// 网页打包工具
cargo install monolith

// 统计Rust代码中的行数、注释和空行
cargo install cargo-count

// 检查Cargo依赖是否存在安全漏洞
cargo install cargo-advisory

// Cargo依赖安全检查
cargo install cargo-deny

// 安装Rust代码审计工具
cargo install cargo-vet

// 帮助你检查项目的依赖项是否存在已知的安全漏洞
cargo install cargo-audit

// 生成Rust代码的汇编版本
cargo install cargo-show-asm

// 当项目文件变化时自动运行cargo指令
cargo install cargo-watch

// 后台代码自动监控检查工具
cargo install bacon

// 下载rust项目依赖的小工具，针对离线开发环境很好用
cargo install cargo-local-registry

// 自动化修复Rust项目中的一些lints和warnings
cargo install cargo-fix

// 比较Rust基准测试结果
cargo install cargo-benchcmp

// 允许你在Cargo.toml文件中添加、删除和更新依赖项。它提供了一种简单的方式来管理项目的依赖关系
cargo install cargo-edit

// 快速创建 Rust 项目、模块和文件的工具
cargo install cargo-generate

// 生成Rust依赖项的可视化图形
cargo install cargo-graph

// 使用适当的编译标志进行 “release” 编译，并将二进制文件上传到 GitHub 发布
cargo install cargo-release

// 自定义构建系统，基于 YAML 配置文件
cargo install cargo-make

// 快速配置cargo项目的编译时间、二进制打包大小
cargo install cargo-wizard

// 对cargo项目配置依赖排序
cargo install cargo-sort

// sea-orm小工具
cargo install sea-orm-cli

// bindgen小工具，将c代码转成rust绑定
cargo install bindgen-cli

// git管理小工具
cargo install gitu --locked

// 火焰图，用于分析性能
cargo install flamegraph

// 分析unsafe代码安全性，仅限linux系统
cargo install kani-verifier
cargo kani setup

// tauri开发小工具
cargo install create-tauri-app
cargo install trunk
cargo install tauri-cli

// 配合tauri开发纯rust项目
rustup target add wasm32-unknown-unknown

// wasm运行部署工具，你懂的
cargo install wasm-bindgen-cli
cargo install wasm-server-runner

// 分布式编译工具
cargo install sccache

// 交叉编译小工具，需要先安装docker才能交叉编译
cargo install cross

// 代码行数统计
cargo install tokei

// 高性能测试工具
cargo install cargo-nextest

// 性能测试工具
cargo install oha

// 检查rust代码语法错误小工具
cargo install typos-cli

// 跨平台GUN工具，具体怎么用我也不懂
cargo install coreutils

// 代码协议格式化小工具
cargo install hawkeye

// html打包小工具
cargo install monolith

// 快速打开md文件浏览
cargo install mdopen

// 将md文件生成电子书
cargo install mdbook

// 将mdbook转成pdf
cargo install mdbook-pdf

// sqlx命令行工具
cargo install sqlx-cli
</code></pre>
<div style="break-before: page; page-break-before: always;"></div><h1 id="tauri开发"><a class="header" href="#tauri开发">Tauri开发</a></h1>
<h2 id="webview下载"><a class="header" href="#webview下载">Webview下载</a></h2>
<p><a href="https://developer.microsoft.com/zh-cn/microsoft-edge/webview2?form=MA13LH#download">https://developer.microsoft.com/zh-cn/microsoft-edge/webview2?form=MA13LH#download</a></p>
<h2 id="tauri仓库地址"><a class="header" href="#tauri仓库地址">Tauri仓库地址</a></h2>
<p><a href="https://github.com/tauri-apps/tauri">https://github.com/tauri-apps/tauri</a></p>
<h2 id="rust开发tauri文档"><a class="header" href="#rust开发tauri文档">Rust开发Tauri文档</a></h2>
<p><a href="https://docs.rs/tauri/1.6.1/tauri">https://docs.rs/tauri/1.6.1/tauri</a></p>
<h2 id="官方文档-1"><a class="header" href="#官方文档-1">官方文档</a></h2>
<p><a href="https://tauri.app">https://tauri.app</a></p>
<h2 id="一条龙开发"><a class="header" href="#一条龙开发">一条龙开发</a></h2>
<pre><code class="language-bash">cargo install create-tauri-app

cargo create-tauri-app

//安装依赖
yarn

//调试运行
yarn tauri dev

把tauri.conf.json里面"identifier"改成"com.tauri.build"再打包

//打包
yarn tauri build
</code></pre>
<div style="break-before: page; page-break-before: always;"></div><h1 id="diesel安装配置运行"><a class="header" href="#diesel安装配置运行">Diesel安装配置运行</a></h1>
<h2 id="官方文档-2"><a class="header" href="#官方文档-2">官方文档</a></h2>
<p><a href="https://diesel.rs">https://diesel.rs</a></p>
<p><a href="https://github.com/diesel-rs/diesel">https://github.com/diesel-rs/diesel</a></p>
<h2 id="diesel-cli安装"><a class="header" href="#diesel-cli安装">diesel-cli安装</a></h2>
<h3 id="设置环境变量"><a class="header" href="#设置环境变量">设置环境变量</a></h3>
<ul>
<li>PQ_LIB_DIR</li>
<li>SQLITE3_LIB_DIR</li>
<li>MYSQLCLIENT_LIB_DIR</li>
</ul>
<pre><code>setx PQ_LIB_DIR "C:\Program Files\PostgreSQL\10\lib"

setx SQLITE3_LIB_DIR "C:\SQLite"

setx MYSQLCLIENT_LIB_DIR "C:\Program Files\MySQL\MySQL Connector C 6.1\lib\vs14"
</code></pre>
<h3 id="安装命令"><a class="header" href="#安装命令">安装命令</a></h3>
<pre><code>cargo install diesel_cli --no-default-features --features mysql

cargo install diesel_cli --no-default-features --features sqlite-bundle

cargo install diesel_cli --no-default-features --features postgres
</code></pre>
<h2 id="sqlite"><a class="header" href="#sqlite">sqlite</a></h2>
<h3 id="sqlite源码下载"><a class="header" href="#sqlite源码下载">sqlite源码下载</a></h3>
<p><a href="https://www.sqlite.org/download.html">https://www.sqlite.org/download.html</a></p>
<p>Precompiled Binaries for Windows</p>
<p>[sqlite-dll-win-x64-3xxxx.zip]       用于编译lib文件</p>
<p>[sqlite-tools-win-x64-3xxxx.zip]   exe可执行文件</p>
<h3 id="编译sqlitelib生成lib文件需使用msvc编译器"><a class="header" href="#编译sqlitelib生成lib文件需使用msvc编译器">编译sqlitelib，生成lib文件（需使用msvc编译器）</a></h3>
<pre><code>//生成64位lib
lib.exe /def:sqlite3.def /machine:x64

//生成32位lib
lib.exe /def:sqlite3.def /machine:x86
</code></pre>
<h3 id="修改rust编译器配置"><a class="header" href="#修改rust编译器配置">修改rust编译器配置</a></h3>
<pre><code>[target.x86_64-pc-windows-msvc]

#启用静态编译，仅限于windows

#C:/Users/Administrator/.cargo/libs存放了sqlitelib文件

rustflags = ["-C", "target-feature=+crt-static","-L","C:/Users/Administrator/.cargo/libs"]

#这里需要配置64位的msvc编译器路径

linker = "C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.29.30133/bin/Hostx64/x64/link.exe"
</code></pre>
<h2 id="mysql"><a class="header" href="#mysql">MySQL</a></h2>
<h3 id="mysql下载"><a class="header" href="#mysql下载">MySQL下载</a></h3>
<p><a href="https://dev.mysql.com/downloads/mysql">https://dev.mysql.com/downloads/mysql</a></p>
<h3 id="mysql-connectorc"><a class="header" href="#mysql-connectorc">MySQL Connector/C++</a></h3>
<p><a href="https://downloads.mysql.com/archives/c-cpp">https://downloads.mysql.com/archives/c-cpp</a></p>
<h3 id="mysql-connectorc-1"><a class="header" href="#mysql-connectorc-1">MySQL Connector/C</a></h3>
<p><a href="https://downloads.mysql.com/archives/c-c">https://downloads.mysql.com/archives/c-c</a></p>
<h3 id="安装失败"><a class="header" href="#安装失败">安装失败</a></h3>
<p><a href="https://dev.mysql.com/doc/c-api/8.0/en/c-api-implementations.html">https://dev.mysql.com/doc/c-api/8.0/en/c-api-implementations.html</a></p>
<p><a href="https://downloads.mysql.com/archives/c-cpp/">https://downloads.mysql.com/archives/c-cpp</a></p>
<h2 id="postgressql"><a class="header" href="#postgressql">PostgresSQL</a></h2>
<h3 id="下载-2"><a class="header" href="#下载-2">下载</a></h3>
<p>https://www.enterprisedb.com/downloads/postgres-postgresql-downloads</p>
<h2 id="使用方法"><a class="header" href="#使用方法">使用方法</a></h2>
<p>1、生成.env</p>
<pre><code>echo DATABASE_URL=mysql://username:password@localhost/diesel_xx &gt; .env
</code></pre>
<p>2、初始化diesel项目</p>
<pre><code>diesel setup
</code></pre>
<p>3、生成schema文件</p>
<pre><code>diesel print-schema &gt; src/schema.rs
</code></pre>
<p>4、手动写入model信息</p>
<h2 id="参考资料"><a class="header" href="#参考资料">参考资料</a></h2>
<p>https://steemit.com/programming/@mrblueberry/installing-rust-and-diesel-for-rocket-on-windows-10</p>
<div style="break-before: page; page-break-before: always;"></div><h1 id="python安装配置"><a class="header" href="#python安装配置">Python安装配置</a></h1>
<h2 id="安装-2"><a class="header" href="#安装-2">安装</a></h2>
<h3 id="官网"><a class="header" href="#官网">官网</a></h3>
<p><a href="https://www.python.org">https://www.python.org</a></p>
<p><a href="https://pypi.org">https://pypi.org</a></p>
<h3 id="windows环境安装包"><a class="header" href="#windows环境安装包">Windows环境安装包</a></h3>
<p><a href="https://www.python.org/downloads/windows">https://www.python.org/downloads/windows</a></p>
<h2 id="配置"><a class="header" href="#配置">配置</a></h2>
<pre><code>pip install -r requirements.txt

魔法上网，你懂的
pip install -r requirements.txt  --proxy 127.0.0.1:7890
</code></pre>
<h2 id="pip官网"><a class="header" href="#pip官网">Pip官网</a></h2>
<p><a href="https://pypi.org">https://pypi.org</a></p>
<h2 id="uv-推荐"><a class="header" href="#uv-推荐">UV 推荐！！！</a></h2>
<p>下载 <a href="https://github.com/astral-sh/uv">https://github.com/astral-sh/uv</a></p>
<p>文档 <a href="https://docs.astral.sh/uv">https://docs.astral.sh/uv</a></p>
<pre><code>先来设置环境变量

缓存目录
UV_CACHE_DIR   =&gt;  F:\ProgramFiles\UV_CACHE_DIR

python解释器目录
UV_PYTHON_INSTALL_DIR   =&gt;  F:\ProgramFiles\UV_PYTHON_INSTALL_DIR

安装python解释器
uv python install 3.7 3.8 3.9 3.10 3.11 3.12 3.13

初始化项目、添加依赖、开始跑
uv init example --python python3.12
uv add ruff
uv run --python hello.py

安装工具
uv tool install ruff
uv pip install django
uv pip install pdoc
uv pip install pdoc3

uv run pdoc python-docx
uv run pdoc3 --html python-docx

启动本地文档服务器（浏览器查看）
uv run --python 3.13 -m pydoc -p 1234  # 访问 http://localhost:1234

初始化django项目并运行
uv run django-admin startproject mysite #mysite就是项目名称
uv run python manage.py runserver

安装jupyter并运行
uv pip install jupyter
uv run jupyter notebook
</code></pre>
<h2 id="pipenv"><a class="header" href="#pipenv">pipenv</a></h2>
<pre><code>安装
pip install pipenv

修改依赖下载存放路径，系统变量
set PIPENV_CACHE_DIR=D:/ProgramFiles/PIPENV_CACHE_DIR

虚拟环境存放在开发项目目录下
PIPENV_VENV_IN_PROJECT 设置为1

真香警告
pipenv install requests
pipenv run python main.py
</code></pre>
<h2 id="poetry"><a class="header" href="#poetry">poetry</a></h2>
<pre><code>安装
pip install poetry

查看配置
poetry config --list

设置依赖下载本地存放路径
poetry config virtualenvs.path  D:/ProgramFiles/poetry/virtualenvs

修改缓存路径
poetry config cache-dir  D:/ProgramFiles/poetry/cache-dir

初始化项目
poetry init

添加依赖
poetry add requests

激活 Poetry 创建的虚拟环境
poetry install

运行
poetry run python main.py
</code></pre>
<div style="break-before: page; page-break-before: always;"></div><h1 id="python优秀项目"><a class="header" href="#python优秀项目">Python优秀项目</a></h1>
<h2 id="序列化反序列化-1"><a class="header" href="#序列化反序列化-1">序列化/反序列化</a></h2>
<h2 id="异步-1"><a class="header" href="#异步-1">异步</a></h2>
<h2 id="web开发-1"><a class="header" href="#web开发-1">Web开发</a></h2>
<p><a href="https://pypi.org/project/Django">Django</a> A high-level Python web framework that encourages rapid development and clean, pragmatic design</p>
<h2 id="sqlorm-1"><a class="header" href="#sqlorm-1">SQL/ORM</a></h2>
<p><a href="https://pypi.org/project/SQLAlchemy">SQLAlchemy</a> 功能强大，支持多种数据库，结合不同驱动使用</p>
<p>sqlacodegen 可以从现有数据库生成 SQLAlchemy 模型代码</p>
<p>alembic 是 SQLAlchemy 的数据库迁移工具，可以通过 autogenerate 功能生成模型</p>
<p>datamodel-code-generator 是一个从数据库生成 Pydantic 和 SQLAlchemy 模型的工具</p>
<p><a href="https://pypi.org/project/peewee">peewee</a> 轻量级，简单易用，支持多种数据库</p>
<p><a href="https://pypi.org/project/sqlmodel">sqlmodel</a> 基于SQLAlchemy和Pydantic，支持类型提示和编辑时校验</p>
<p><a href="https://pypi.org/project/pony">pony</a> 独特语法（生成器表达式自动转SQL），支持上述MySQL、PG、Sqlite</p>
<h2 id="爬虫-1"><a class="header" href="#爬虫-1">爬虫</a></h2>
<p><a href="https://pypi.org/project/DrissionPage">drissionpage</a> 基于 python 的网页自动化工具</p>
<h2 id="测试"><a class="header" href="#测试">测试</a></h2>
<h2 id="脚本语言-1"><a class="header" href="#脚本语言-1">脚本语言</a></h2>
<h2 id="工具类"><a class="header" href="#工具类">工具类</a></h2>
<h2 id="数据库-1"><a class="header" href="#数据库-1">数据库</a></h2>
<div style="break-before: page; page-break-before: always;"></div><h1 id="go安装下载"><a class="header" href="#go安装下载">Go安装下载</a></h1>
<h2 id="安装-3"><a class="header" href="#安装-3">安装</a></h2>
<h3 id="官网-1"><a class="header" href="#官网-1">官网</a></h3>
<p><a href="https://go.dev">https://go.dev</a></p>
<h3 id="下载-3"><a class="header" href="#下载-3">下载</a></h3>
<p><a href="https://go.dev/dl">https://go.dev/dl</a></p>
<h3 id="历史版本"><a class="header" href="#历史版本">历史版本</a></h3>
<p><a href="https://go.dev/doc/devel/release">https://go.dev/doc/devel/release</a></p>
<h3 id="包查询"><a class="header" href="#包查询">包查询</a></h3>
<p><a href="https://pkg.go.dev">https://pkg.go.dev</a></p>
<h3 id="查询具体版本"><a class="header" href="#查询具体版本">查询具体版本</a></h3>
<p><a href="https://goproxy.cn/golang.org/x/tools/gopls/@v/list">https://goproxy.cn/golang.org/x/tools/gopls/@v/list</a></p>
<p><a href="https://goproxy.cn/golang.org/x/tools/gopls/@v/v0.14.2.info">https://goproxy.cn/golang.org/x/tools/gopls/@v/v0.14.2.info</a></p>
<h2 id="配置-1"><a class="header" href="#配置-1">配置</a></h2>
<h3 id="设置gopath系统变量存放各种第三方依赖包"><a class="header" href="#设置gopath系统变量存放各种第三方依赖包">设置GOPATH系统变量（存放各种第三方依赖包）</a></h3>
<p>GOPATH系统变量：用于设置Go语言的工作空间目录。（请注意，Go 1.11版本及更高版本引入了Go模块（Go Modules）的概念，可以在任何目录下工作，而不需要依赖于GoPath环境变量）</p>
<p>F:\ProgramFiles\GO_REPO\GOPATH</p>
<h3 id="设置goroot系统变量"><a class="header" href="#设置goroot系统变量">设置GOROOT系统变量</a></h3>
<p>GOROOT系统变量：用来指定Go语言的安装目录。它应该指向你安装Go语言的根目录。</p>
<p>D:\ProgramFiles\go1.20.14.windows-amd64\go</p>
<h3 id="将gorootbin加入系统变量path"><a class="header" href="#将gorootbin加入系统变量path">将%GOROOT%\bin加入系统变量Path</a></h3>
<h2 id="设置go缓存存放构建编译文件"><a class="header" href="#设置go缓存存放构建编译文件">设置GO缓存（存放构建编译文件）</a></h2>
<p>GOCACHE=F:\ProgramFiles\GO_REPO\GOCACHE</p>
<h3 id="设置代理"><a class="header" href="#设置代理">设置代理</a></h3>
<pre><code>//设置代理
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct

//查看配置
go env
</code></pre>
<h3 id="go离线开发"><a class="header" href="#go离线开发">Go离线开发</a></h3>
<pre><code>// 清理并下载构建所需的依赖
go mod tidy

// 下载所有依赖，包括源码和二进制包
go mod download all 

// 下载测试依赖
go test -i ./...

// 验证依赖是否完整，运行以下命令检查是否遗漏依赖
go list -m all

// 离线查看项目依赖包文档
godoc -http=:6060
</code></pre>
<p>export GOPROXY=file://$GOPATH/pkg/mod/cache/download</p>
<p>export GONOSUMDB=*</p>
<p>export GOPRIVATE=*</p>
<p>$GOPATH根据实际情况要替换成具体路径！！</p>
<p>解释：</p>
<p>1、GONOSUMDB 环境变量的作用</p>
<p>GONOSUMDB 用于设置不需要进行远程校验的模块。它可以指定一个或多个模块路径的匹配规则：</p>
<p>默认行为：</p>
<p>如果模块路径匹配 GONOSUMDB 的规则，Go 将跳过对这些模块的远程校验，仅依赖本地的 go.sum 文件。</p>
<p>使用 * 通配符：</p>
<p>GONOSUMDB=* 的意思是跳过所有模块的远程校验，完全依赖本地的 go.sum 文件或直接忽略校验。</p>
<p>2、GOPRIVATE=*</p>
<p>所有模块都被视为私有模块。</p>
<p>Go 会跳过所有模块的公共代理和校验数据库。</p>
<p>这通常用于完全离线的开发环境，或者开发过程中所有依赖模块都通过私有仓库管理的场景。</p>
<h2 id="vscode插件"><a class="header" href="#vscode插件">VSCode插件</a></h2>
<h3 id="go"><a class="header" href="#go">Go</a></h3>
<p><a href="https://marketplace.visualstudio.com/items?itemName=golang.Go">https://marketplace.visualstudio.com/items?itemName=golang.Go</a></p>
<h3 id="vscode-go-syntax"><a class="header" href="#vscode-go-syntax">vscode-go-syntax</a></h3>
<p><a href="https://marketplace.visualstudio.com/items?itemName=dunstontc.vscode-go-syntax">https://marketplace.visualstudio.com/items?itemName=dunstontc.vscode-go-syntax</a></p>
<div style="break-before: page; page-break-before: always;"></div><h2 id="go开发离线安装插件"><a class="header" href="#go开发离线安装插件">Go开发离线安装插件</a></h2>
<pre><code>// 查询版本
https://goproxy.cn/golang.org/x/tools/gopls/@v/list
https://goproxy.cn/golang.org/x/tools/gopls/@v/v0.14.2.info

// 监控项目文件，热编译项目，适合go1.20.0
go install  github.com/cosmtrek/air@v1.30.0

// 使用方法
// air init

// 官方插件，非常好用
go install -v golang.org/x/tools/gopls@latest

// 官方插件，非常好用，兼容Go1.18
go install -v golang.org/x/tools/gopls@v0.14.2

// 文档生成工具，兼容Go1.20
go install -v golang.org/x/tools/cmd/godoc@v0.24.0

// 使用方法
// godoc -http=:6060

// go语言调试工具
go install github.com/go-delve/delve/cmd/dlv@latest

//go语言代码检查，自动补全
go install github.com/mdempsky/gocode@latest

//go代码定义和引用跳转
go  install github.com/rogpeppe/godef@latest

//go语言代码规范检查
go install golang.org/x/lint/golint@latest

//提取json形式声明
go install github.com/ramya-rao-a/go-outline@latest

//快速列出可用包
go install github.com/uudashr/gopkgs/cmd/gopkgs@latest

//快速重命名
go install golang.org/x/tools/cmd/gorename@latest

//类似fmt和import工具，快速填充返回值
go install github.com/sqs/goreturns@latest

//提取json
go install github.com/acroca/go-symbols@latest

//代码高亮
go install golang.org/x/tools/cmd/guru@latest

go install github.com/haya14busa/goplay/cmd/goplay@latest

go install github.com/godoctor/godoctor@latest

go install github.com/josharian/impl@latest
</code></pre>
<div style="break-before: page; page-break-before: always;"></div><h1 id="zig安装"><a class="header" href="#zig安装">Zig安装</a></h1>
<h2 id="下载-4"><a class="header" href="#下载-4">下载</a></h2>
<p><a href="https://ziglang.org/zh/download">https://ziglang.org/zh/download</a></p>
<div style="break-before: page; page-break-before: always;"></div><h1 id="swift安装配置"><a class="header" href="#swift安装配置">Swift安装配置</a></h1>
<h2 id="安装-4"><a class="header" href="#安装-4">安装</a></h2>
<h3 id="官网-2"><a class="header" href="#官网-2">官网</a></h3>
<p><a href="https://www.swift.org">https://www.swift.org</a></p>
<h3 id="下载-5"><a class="header" href="#下载-5">下载</a></h3>
<p><a href="https://www.swift.org/download/#releases">https://www.swift.org/download/#releases</a></p>
<h3 id="查看是否安装成功"><a class="header" href="#查看是否安装成功">查看是否安装成功</a></h3>
<pre><code>swift --version

// 初始化项目
swift package init --type executable

// 初始化msvc配置
vcvarsall.bat x64

// 运行项目
swift run

swift --help
</code></pre>
<h2 id="swift-packageswift拉取第三方库设置缓存路径"><a class="header" href="#swift-packageswift拉取第三方库设置缓存路径">swift Package.swift拉取第三方库设置缓存路径</a></h2>
<p>在Swift中，设置Package.swift第三方库的缓存路径通常是通过环境变量来实现的。你可以设置<code>SWIFT_PACKAGE_CACHE_PATH</code>环境变量来指定缓存路径。</p>
<h2 id="第三方开发库"><a class="header" href="#第三方开发库">第三方开发库</a></h2>
<p><a href="https://cocoapods.org">https://cocoapods.org</a></p>
<div style="break-before: page; page-break-before: always;"></div><h1 id="java安装部署"><a class="header" href="#java安装部署">Java安装部署</a></h1>
<h2 id="官网-3"><a class="header" href="#官网-3">官网</a></h2>
<p><a href="https://www.oracle.com/java/technologies/downloads/#jdk17-windows">https://www.oracle.com/java/technologies/downloads/#jdk17-windows</a></p>
<h2 id="下载大全"><a class="header" href="#下载大全">下载大全</a></h2>
<p><a href="https://www.oracle.com/java/technologies/downloads/archive">https://www.oracle.com/java/technologies/downloads/archive</a></p>
<h2 id="jdk8"><a class="header" href="#jdk8">Jdk8</a></h2>
<p><a href="https://www.oracle.com/java/technologies/downloads/#java8">https://www.oracle.com/java/technologies/downloads/#java8</a></p>
<h2 id="jdk9"><a class="header" href="#jdk9">Jdk9</a></h2>
<p><a href="https://www.oracle.com/java/technologies/javase/javase9-archive-downloads.html">https://www.oracle.com/java/technologies/javase/javase9-archive-downloads.html</a></p>
<h2 id="jdk10"><a class="header" href="#jdk10">Jdk10</a></h2>
<p><a href="https://www.oracle.com/java/technologies/java-archive-javase10-downloads.html">https://www.oracle.com/java/technologies/java-archive-javase10-downloads.html</a></p>
<h2 id="jdk11"><a class="header" href="#jdk11">Jdk11</a></h2>
<p><a href="https://www.oracle.com/java/technologies/downloads/#java11">https://www.oracle.com/java/technologies/downloads/#java11</a></p>
<h2 id="环境变量设置"><a class="header" href="#环境变量设置">环境变量设置</a></h2>
<h3 id="系统变量java_home"><a class="header" href="#系统变量java_home">系统变量JAVA_HOME</a></h3>
<div style="break-before: page; page-break-before: always;"></div><h1 id="maven配置"><a class="header" href="#maven配置">Maven配置</a></h1>
<h2 id="mvn下载"><a class="header" href="#mvn下载">mvn下载</a></h2>
<p><a href="https://maven.apache.org/download.cgi">https://maven.apache.org/download.cgi</a></p>
<h2 id="maven仓库索引"><a class="header" href="#maven仓库索引">maven仓库索引</a></h2>
<p><a href="https://mvnrepository.com">https://mvnrepository.com</a></p>
<h2 id="下载依赖-1"><a class="header" href="#下载依赖-1">下载依赖</a></h2>
<p>mvn dependency:copy-dependencies -DoutputDirectory=lib</p>
<h2 id="清空"><a class="header" href="#清空">清空</a></h2>
<p>mvn clean package -DskipTests -U</p>
<div style="break-before: page; page-break-before: always;"></div><h1 id="selenium开发"><a class="header" href="#selenium开发">Selenium开发</a></h1>
<h2 id="驱动下载"><a class="header" href="#驱动下载">驱动下载</a></h2>
<p><a href="https://developer.chrome.com/docs/chromedriver/downloads/version-selection?hl=zh-cn">https://developer.chrome.com/docs/chromedriver/downloads/version-selection?hl=zh-cn</a></p>
<h2 id="下载地址-1"><a class="header" href="#下载地址-1">下载地址</a></h2>
<p><a href="https://storage.googleapis.com/chrome-for-testing-public/129.0.6668.70/win64/chromedriver-win64.zip">https://storage.googleapis.com/chrome-for-testing-public/129.0.6668.70/win64/chromedriver-win64.zip</a></p>
<p>（版本号换成自己谷歌浏览器版本）</p>
<h2 id="真香警告"><a class="header" href="#真香警告">真香警告</a></h2>
<pre><code>&lt;dependency&gt;
    &lt;groupId&gt;org.seleniumhq.selenium&lt;/groupId&gt;
    &lt;artifactId&gt;selenium-java&lt;/artifactId&gt;
    &lt;version&gt;3.141.59&lt;/version&gt;
&lt;/dependency&gt;
</code></pre>
<h2 id="selenium下载地址"><a class="header" href="#selenium下载地址">selenium下载地址</a></h2>
<p><a href="https://www.selenium.dev/downloads">https://www.selenium.dev/downloads</a></p>
<div style="break-before: page; page-break-before: always;"></div><h1 id="node下载安装配置"><a class="header" href="#node下载安装配置">Node下载安装配置</a></h1>
<h2 id="下载地址-2"><a class="header" href="#下载地址-2">下载地址</a></h2>
<p><a href="https://nodejs.org/en/download">https://nodejs.org/en/download</a></p>
<p><a href="https://nodejs.org/dist">https://nodejs.org/dist</a></p>
<h2 id="安装-5"><a class="header" href="#安装-5">安装</a></h2>
<p>将node安装到D:\ProgramFiles\nodejs-XXX目录。</p>
<h2 id="一顿操作"><a class="header" href="#一顿操作">一顿操作</a></h2>
<pre><code>//设置npm全局安装路径与缓存路径
npm config set prefix "F:/ProgramFiles/NODE_REPO/node_global"
npm config set cache "F:/ProgramFiles/NODE_REPO/node_cache"

//更换淘宝源
npm config set registry http://registry.npm.taobao.org/
npm config get registry
</code></pre>
<h2 id="安装cnpm"><a class="header" href="#安装cnpm">安装cnpm</a></h2>
<pre><code>npm install -g cnpm --registry=https://registry.npm.taobao.org
</code></pre>
<h2 id="查看cnpm是否可用"><a class="header" href="#查看cnpm是否可用">查看cnpm是否可用</a></h2>
<pre><code>cnpm -v
</code></pre>
<h2 id="配置环境变量"><a class="header" href="#配置环境变量">配置环境变量</a></h2>
<p>path    --D:\Program Files\nodejs\node_global</p>
<h2 id="node_modules离线安装"><a class="header" href="#node_modules离线安装">node_modules离线安装</a></h2>
<p>操作步骤只有两步，复制和全局安装，即：</p>
<p>复制本地local下的npm-cache文件，至内网环境同目录下，如果不知道在哪里，则可以执行如下指令：</p>
<p>npm config get cache</p>
<p>// 可看到此路径 C:\Users\HP\AppData\Local\npm-cache</p>
<p>// 这只是我本人电脑中的路径，根据系统不同，略有不同</p>
<p>可以看到我们本地npm缓存的位置，把npm-cahe整个文件复制进去即可</p>
<p>使用-offline指令，即：</p>
<p>npm install -offline
此命令是使用本地缓存的依赖包进行安装</p>
<p>如果新增了依赖包，则需要把npm cache复制到离线环境，然后需要替换项目的package.json、package-lock.json文件，然后再进行install --offline即可</p>
<div style="break-before: page; page-break-before: always;"></div><h1 id="yarn安装部署"><a class="header" href="#yarn安装部署">Yarn安装部署</a></h1>
<h2 id="yarn的简介"><a class="header" href="#yarn的简介">yarn的简介</a></h2>
<p>Yarn是facebook发布的一款取代npm的包管理工具。</p>
<h2 id="安装-6"><a class="header" href="#安装-6">安装</a></h2>
<h3 id="下载nodejs使用npm安装"><a class="header" href="#下载nodejs使用npm安装">下载node.js，使用npm安装</a></h3>
<pre><code>npm install -g yarn 
</code></pre>
<h3 id="查看版本"><a class="header" href="#查看版本">查看版本</a></h3>
<pre><code>yarn --version
</code></pre>
<h2 id="一顿操作-1"><a class="header" href="#一顿操作-1">一顿操作</a></h2>
<pre><code>//Yarn淘宝源安装
yarn config set registry https://registry.npm.taobao.org -g 
yarn config set sass_binary_site http://cdn.npm.taobao.org/dist/node-sass -g

//魔法代理，你懂的
yarn config set https-proxy http://127.0.0.1:7890
yarn config set proxy http://127.0.0.1:7890

//设置缓存目录
yarn config set cache-folder "F:/ProgramFiles/NODE_REPO/yarn_cache"

//设置本地依赖目录
yarn config set yarn-offline-mirror "F:/ProgramFiles/NODE_REPO/yarn_offline_mirror"

//使缓存文件夹保持最新
yarn config set yarn-offline-mirror-pruning true

//重新设置https-proxy、proxy
yarn config delete https-proxy
yarn config delete proxy
yarn config get https-proxy
yarn config get proxy
</code></pre>
<h3 id="查看配置"><a class="header" href="#查看配置">查看配置</a></h3>
<pre><code>// 显示所有配置项
yarn config list

//查看代理情况
yarn config get https-proxy 
yarn config get proxy 
</code></pre>
<h3 id="证书过期怎么办"><a class="header" href="#证书过期怎么办">证书过期怎么办</a></h3>
<p>运行yarn install 报错提示：</p>
<p>yarn install  Error: certificate has expired</p>
<pre><code>yarn config set strict-ssl false
</code></pre>
<h2 id="yarn的特点"><a class="header" href="#yarn的特点">yarn的特点</a></h2>
<p>速度超快</p>
<p>Yarn 缓存了每个下载过的包，所以再次使用时无需重复下载。 同时利用并行下载以最大化资源利用率，因此安装速度更快</p>
<p>超级安全</p>
<p>在执行代码之前，Yarn 会通过算法校验每个安装包的完整性</p>
<p>超级可靠</p>
<p>使用详细、简洁的锁文件格式和明确的安装算法，Yarn 能够保证在不同系统上无差异的工作。</p>
<h2 id="yarn的常用命令"><a class="header" href="#yarn的常用命令">yarn的常用命令</a></h2>
<p>安装yarn</p>
<p>npm install -g yarn</p>
<p>安装成功后，查看版本号</p>
<p>yarn --version</p>
<p>创建文件夹 yarn</p>
<p>md yarn</p>
<p>进入yarn文件夹</p>
<p>cd yarn</p>
<p>初始化项目</p>
<p>yarn init // 同npm init，执行输入信息后，会生成package.json文件</p>
<p>yarn的配置项</p>
<p>yarn config list // 显示所有配置项</p>
<p>yarn config get <key> //显示某配置项</p>
<p>yarn config delete <key> //删除某配置项</p>
<p>yarn config set <key> <value> [-g|--global] //设置配置项</p>
<p>安装包</p>
<p>yarn install //安装package.json里所有包，并将包及它的所有依赖项保存进yarn.lock
yarn install --flat //安装一个包的单一版本
yarn install --force //强制重新下载所有包
yarn install --production //只安装dependencies里的包
yarn install --no-lockfile //不读取或生成yarn.lock
yarn install --pure-lockfile //不生成yarn.lock
yarn install --offline  //从缓存离线安装依赖</p>
<p>添加包（会更新package.json和yarn.lock）</p>
<p>yarn add [package] // 在当前的项目中添加一个依赖包，会自动更新到package.json和yarn.lock文件中</p>
<p>yarn add [package]@[version] // 安装指定版本，这里指的是主要版本，如果需要精确到小版本，使用-E参数</p>
<p>yarn add [package]@[tag] // 安装某个tag（比如beta,next或者latest）</p>
<p>//不指定依赖类型默认安装到dependencies里，你也可以指定依赖类型</p>
<p>yarn add --dev/-D // 加到 devDependencies</p>
<p>yarn add --peer/-P // 加到 peerDependencies</p>
<p>yarn add --optional/-O // 加到 optionalDependencies</p>
<p>//默认安装包的主要版本里的最新版本，下面两个命令可以指定版本</p>
<p>yarn add --exact/-E // 安装包的精确版本。例如yarn add foo@1.2.3会接受1.9.1版，但是yarn add foo@1.2.3 --exact只会接受1.2.3版</p>
<p>yarn add --tilde/-T // 安装包的次要版本里的最新版。例如yarn add foo@1.2.3 --tilde会接受1.2.9，但不接受1.3.0</p>
<p>发布包</p>
<p>yarn publish</p>
<p>移除一个包</p>
<p>yarn remove <packageName>：移除一个包，会自动更新package.json和yarn.lock</p>
<p>更新一个依赖</p>
<p>yarn upgrade 用于更新包到基于规范范围的最新版本</p>
<p>运行脚本</p>
<p>yarn run 用来执行在 package.json 中 scripts 属性下定义的脚本</p>
<p>显示某个包的信息</p>
<p>yarn info <packageName> 可以用来查看某个模块的最新版本信息</p>
<p>缓存</p>
<p>yarn cache</p>
<p>yarn cache list # 列出已缓存的每个包</p>
<p>yarn cache dir # 返回 全局缓存位置</p>
<p>yarn cache clean # 清除缓存</p>
<h2 id="npm-与-yarn命令比较"><a class="header" href="#npm-与-yarn命令比较">npm 与 yarn命令比较</a></h2>
<p>比如说你的项目模块依赖是图中描述的，@1.2.1代表这个模块的版本。在你安装A的时候需要安装依赖C和D，很多依赖不会指定版本号，默认会安装最新的版本，这样就会出现问题：比如今天安装模块的时候C和D是某一个版本，而当以后C、D更新的时候，再次安装模块就会安装C和D的最新版本，如果新的版本无法兼容你的项目，你的程序可能就会出BUG，甚至无法运行。这就是npm的弊端，而yarn为了解决这个问题推出了yarn.lock的机制，这是作者项目中的yarn.lock文件。</p>
<p>注意：这个文件不要手动修改它，当你使用一些操作如yarn add时，yarn会自动更新yarn.lock</p>
<p>参考：https://blog.csdn.net/weixin_40808668/article/details/122606543</p>
<div style="break-before: page; page-break-before: always;"></div><h1 id="vue代码格式化插件"><a class="header" href="#vue代码格式化插件">Vue代码格式化插件</a></h1>
<h2 id="vuevolar"><a class="header" href="#vuevolar">Vue.volar</a></h2>
<p>官方插件</p>
<p><a href="https://marketplace.visualstudio.com/items?itemName=Vue.volar">https://marketplace.visualstudio.com/items?itemName=Vue.volar</a></p>
<h2 id="vetur"><a class="header" href="#vetur">vetur</a></h2>
<p>语法高亮：支持.vue文件的语法高亮。</p>
<p>代码补全：智能补全Vue模板、脚本和样式代码。</p>
<p>错误提示：实时显示代码中的错误和警告。</p>
<p>格式化：支持Prettier和ESLint的代码格式化。</p>
<p>Vetur是Vue官方推荐的VSCode插件，几乎是开发Vue项目的必备插件。</p>
<p><a href="https://marketplace.visualstudio.com/items?itemName=octref.vetur">https://marketplace.visualstudio.com/items?itemName=octref.vetur</a></p>
<pre><code>"[vue]": {
"editor.defaultFormatter": "octref.vetur"
   }
</code></pre>
<h2 id="vscode-eslint"><a class="header" href="#vscode-eslint">vscode-eslint</a></h2>
<p>静态代码分析：通过定义规则，自动检查代码中的错误和不规范之处。</p>
<p>错误提示：实时显示代码中的错误和警告。</p>
<p>自动修复：支持部分错误和警告的自动修复。</p>
<p>ESLint插件可以与Vetur结合使用，确保Vue项目中的代码质量。</p>
<p><a href="https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint">https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint</a></p>
<h2 id="prettier-vscode"><a class="header" href="#prettier-vscode">prettier-vscode</a></h2>
<p>Prettier是一个强大的代码格式化工具，VSCode中的Prettier插件提供了以下功能：</p>
<p>代码格式化：根据配置文件自动格式化代码，保持代码风格的一致性。</p>
<p>支持多种语言：不仅支持JavaScript，还支持CSS、HTML、JSON等多种语言。</p>
<p>Prettier可以与ESLint结合使用，通过Vetur配置文件进行整合，实现代码的统一格式化和质量检查。</p>
<p><a href="https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode">https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode</a></p>
<h3 id="vue-vscode-snippets"><a class="header" href="#vue-vscode-snippets">vue-vscode-snippets</a></h3>
<p>Vue VSCode Snippets插件提供了大量的代码片段，极大地提高了代码编写的效率。主要功能包括：</p>
<p>代码片段：提供常用的Vue代码片段，如v-for、v-if、methods、computed等。
快捷键：通过输入简短的关键词，快速插入代码片段。
这个插件对于经常编写重复性代码的开发者来说非常有帮助。</p>
<p><a href="https://marketplace.visualstudio.com/items?itemName=sdras.vue-vscode-snippets">https://marketplace.visualstudio.com/items?itemName=sdras.vue-vscode-snippets</a></p>
<h2 id="path-intellisense"><a class="header" href="#path-intellisense">path-intellisense</a></h2>
<p>Path Intellisense插件可以智能补全文件路径，主要功能包括：</p>
<p>路径补全：在引入文件时，自动补全文件路径。</p>
<p>文件预览：在选择文件路径时，提供文件的预览。</p>
<p>这个插件可以避免手动输入文件路径的错误，提高开发效率。</p>
<p><a href="https://marketplace.visualstudio.com/items?itemName=christian-kohler.path-intellisense">https://marketplace.visualstudio.com/items?itemName=christian-kohler.path-intellisense</a></p>
<h2 id="auto-rename-tag"><a class="header" href="#auto-rename-tag">auto-rename-tag</a></h2>
<p>Auto Rename Tag插件用于自动重命名HTML/XML标签，主要功能包括：</p>
<p>自动重命名：在修改标签名称时，自动更新配对的结束标签。</p>
<p>错误防范：减少手动修改标签名称时出错的机会。</p>
<p>这个插件对于频繁修改标签结构的开发者来说非常实用。</p>
<p><a href="https://marketplace.visualstudio.com/items?itemName=formulahendry.auto-rename-tag">https://marketplace.visualstudio.com/items?itemName=formulahendry.auto-rename-tag</a></p>
<div style="break-before: page; page-break-before: always;"></div><h1 id="phpmyadmin越狱"><a class="header" href="#phpmyadmin越狱">phpMyAdmin越狱</a></h1>
<h1 id=""><a class="header" href="#"></a></h1>
<h2 id="phpmyadmin配置修改访问远程数据库"><a class="header" href="#phpmyadmin配置修改访问远程数据库">phpMyAdmin配置修改（访问远程数据库）</a></h2>
<p>config.default.php</p>
<pre><code>$cfg['AllowArbitraryServer'] = false;  改为true

$cfg['LoginCookieValidity'] = 1440; 改为12000
</code></pre>
<h2 id="phpini配置修改增加保持登录时间"><a class="header" href="#phpini配置修改增加保持登录时间">php.ini配置修改（增加保持登录时间）</a></h2>
<pre><code>session.gc_maxlifetime = 1440  //改为14400
</code></pre>
<div style="break-before: page; page-break-before: always;"></div><h1 id="git初始化配置"><a class="header" href="#git初始化配置">Git初始化配置</a></h1>
<h2 id="下载-6"><a class="header" href="#下载-6">下载</a></h2>
<p><a href="https://git-scm.com/downloads">https://git-scm.com/downloads</a></p>
<p><a href="https://git-scm.com/download/win">https://git-scm.com/download/win</a></p>
<h2 id="密钥生成"><a class="header" href="#密钥生成">密钥生成</a></h2>
<p>打开Git Bash，查看ls ~/.ssh下是否有密钥文件id_rsa*，有的话可先进行备份。</p>
<p>然后用如下命令生成新密钥：</p>
<pre><code>ssh-keygen -t rsa -C "your_email@example.com"
</code></pre>
<p>参数含义：</p>
<p>-t 指定密钥类型，默认是 rsa ，可以省略。</p>
<p>-C 设置注释文字，比如邮箱。</p>
<p>-f 指定密钥文件存储文件名。</p>
<p>若省略-f，则命令运行之后会提示输入一个文件名，以保存刚才生成的SSH key密钥："Enter file in which to save the key (/c/Users/xxx(用户名)/.ssh/id_rsa):"</p>
<p>可直接回车采用默认文件名。</p>
<p>接着又会提示输入密码："Enter passphrase (empty for no passphrase):"，该密码是push代码的时候要输入的密码。</p>
<p>这时正常情况下会生成id_rsa.pub和id_rsa文件。文件位于C:\Users\xxx(用户名).ssh目录下。</p>
<h2 id="github上添加密钥"><a class="header" href="#github上添加密钥">GitHub上添加密钥</a></h2>
<p>将以上生成的id_rsa.pub文件中的密钥拷贝出来，添加到GitHub上的SSH Keys中。</p>
<h2 id="初始化"><a class="header" href="#初始化">初始化</a></h2>
<pre><code>git config --global user.name '杨学者' 
git config --global user.email 'nidongde@qq.com'

//忽略文本换行符不一致警告
git config --global core.safecrlf false

//设置字符编码集
git config --global i18n.commit.encoding utf-8
git config --global i18n.logoutputencoding utf-8

//防止中文被转义
git config --global core.quotepath false
</code></pre>
<div style="break-before: page; page-break-before: always;"></div><h1 id="git简易教程"><a class="header" href="#git简易教程">Git简易教程</a></h1>
<h2 id="简单教程"><a class="header" href="#简单教程">简单教程</a></h2>
<p><a href="https://www.liaoxuefeng.com/wiki/896043488029600">https://www.liaoxuefeng.com/wiki/896043488029600</a></p>
<h2 id="quick-pushbatwindows"><a class="header" href="#quick-pushbatwindows">quick-push.bat(windows)</a></h2>
<pre><code>@echo off
chcp 65001

set /p input=please enter the comments: 

set "Time=%time:~0,8%"
set "t=%Time: =0%"

set "remarks=%date:~,4%-%date:~5,2%-%date:~8,2%-%t%-push-miaomiao1992-%input%"
echo "%remarks%"

git add .

git commit -m  "%remarks%"
git push origin master

echo --End--
@pause

</code></pre>
<h2 id="quick-pushshlinux"><a class="header" href="#quick-pushshlinux">quick-push.sh(linux)</a></h2>
<pre><code>git add .

# 提示输入提交信息
echo -n "input commit message:"
read input_msg

# 开始提交代码
git commit -a -m "$input_msg"
git push origin master

echo "git commit and push success"
</code></pre>
<h3 id="代理"><a class="header" href="#代理">代理</a></h3>
<pre><code class="language-bash">git config --global http.proxy http://127.0.0.1:7890

git config --global https.proxy https://127.0.0.1:7890

//这个命令将 Git 的缓冲区大小增加到 500 MB（默认是 1 MB）。这有助于在处理大型仓库时防止连接中断。
git config --global http.postBuffer 524288000

//把git的代理改成xx的端口，改完了可以配置是否修改成功
git config -l

//取消代理
git config --global --unset http.proxy
git config --global --unset https.proxy
</code></pre>
<h2 id="设置访问权限"><a class="header" href="#设置访问权限">设置访问权限</a></h2>
<pre><code>git config --global --add safe.directory "*"
</code></pre>
<div style="break-before: page; page-break-before: always;"></div><h1 id="git疑难杂症"><a class="header" href="#git疑难杂症">Git疑难杂症</a></h1>
<h2 id="冲突"><a class="header" href="#冲突">冲突</a></h2>
<p>团队其他成员修改了某文件并已提交入库，你在pull之前修改了本地该文件，等你修改完代码再pull时，这时会报错如下错误：</p>
<p>error: Your local changes to the following files would be overwritten by merge</p>
<p>根据是否要保存本地修改，有以下两种解决方案</p>
<p>1、保留修改</p>
<p>执行以下三条命令</p>
<pre><code>#封存修改
git stash 

git pull origin master 

#把修改还原
git stash pop 
</code></pre>
<p>注：</p>
<p>git stash：备份当前工作区内容，从最近的一次提交中读取相关内容，让工作区保证和上次提交的内容一致。同时，将当前工作区内容保存到Git栈中</p>
<p>git pull：拉取服务器上当前分支代码</p>
<p>git stash pop：从Git栈中读取最近一次保存的内容，恢复工作区相关内容。同时，用户可能进行多次stash操作，需要保证后stash的最先被取到，所以用栈（先进后出）来管理；pop取栈顶的内容并恢复</p>
<p>git stash list：显示Git栈内的所有备份，可以利用这个列表来决定从那个地方恢复。</p>
<p>git stash clear：清空Git栈</p>
<p>2、废弃修改</p>
<p>核心思想就是版本回退，具体命令如下：</p>
<p>git reset --hard</p>
<p>git pull origin master</p>
<p>注：不建议使用第二种。除非你再三确定不需要本地的修改了。</p>
<h2 id="回撤"><a class="header" href="#回撤">回撤</a></h2>
<p>回到到上一次提交记录</p>
<p>git reset --hard 2d0e14de3ff3ae8a9db17f2b0b4c2941d48 (最近提交记录的前一条记录 commit id)</p>
<p>git push origin HEAD</p>
<p>git log 查看记录</p>
<p>回撤commit记录，不回撤add记录</p>
<p>git reset --soft HEAD~1  回撤1次</p>
<p>回撤git add记录</p>
<p>git reset   //此步骤会将代码撤销到执行git add</p>
<p>Git: ‘LF will be replaced by CRLF the next time Git touches it‘</p>
<p>设置方法一：</p>
<p>#提交时转换为LF，检出时转换为CRLF</p>
<p>git config --global core.autocrlf true</p>
<p>*适用于Windows系统，且一般为Windows默认设置，会在提交时对换行符进行CRLF - LF的转换，检出时又会进行LF - CRLF的转换。</p>
<p>设置方法二：</p>
<p>#提交时转换为LF，检出时不转换
git config --global core.autocrlf input</p>
<p>*适用于Linux系统，所有换行符都会进行CRLF - LF转换，但操作时不会转换回CRLF。</p>
<p>设置方法三：</p>
<p>#提交检出均不转换</p>
<p>git config --global core.autocrlf false</p>
<p>*适用于Windows系统，且只在Windows上开发的情况。在提交、检出时不会对CRLF/LF换行符进行转换</p>
<div style="break-before: page; page-break-before: always;"></div><h1 id="vscode实用插件"><a class="header" href="#vscode实用插件">VSCode实用插件</a></h1>
<p>历史插件下载</p>
<p><a href="https://open-vsx.org">https://open-vsx.org</a></p>
<h2 id="vscode-mindmap"><a class="header" href="#vscode-mindmap">vscode-mindmap</a></h2>
<p>画思维图</p>
<p><a href="https://marketplace.visualstudio.com/items?itemName=Souche.vscode-mindmap">https://marketplace.visualstudio.com/items?itemName=Souche.vscode-mindmap</a></p>
<h2 id="drawio"><a class="header" href="#drawio">draw.io</a></h2>
<p>画流程图</p>
<p><a href="https://marketplace.visualstudio.com/items?itemName=hediet.vscode-drawio">https://marketplace.visualstudio.com/items?itemName=hediet.vscode-drawio</a></p>
<h2 id="notes"><a class="header" href="#notes">Notes</a></h2>
<p>用于编辑md文件</p>
<p><a href="https://marketplace.visualstudio.com/items?itemName=dionmunk.vscode-notes">https://marketplace.visualstudio.com/items?itemName=dionmunk.vscode-notes</a></p>
<h2 id="project-manager"><a class="header" href="#project-manager">Project Manager</a></h2>
<p>快速管理项目文件</p>
<p><a href="https://marketplace.visualstudio.com/items?itemName=alefragnani.project-manager">https://marketplace.visualstudio.com/items?itemName=alefragnani.project-manager</a></p>
<h2 id="hex-editor"><a class="header" href="#hex-editor">Hex Editor</a></h2>
<p>快速编辑二进制文件</p>
<p><a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode.hexeditor">https://marketplace.visualstudio.com/items?itemName=ms-vscode.hexeditor</a></p>
<h2 id="sqlite3-editor"><a class="header" href="#sqlite3-editor">SQLite3 Editor</a></h2>
<p>快速编辑sqlite3</p>
<p><a href="https://marketplace.visualstudio.com/items?itemName=yy0931.vscode-sqlite3-editor">https://marketplace.visualstudio.com/items?itemName=yy0931.vscode-sqlite3-editor</a></p>
<div style="break-before: page; page-break-before: always;"></div><h1 id="vscode实用插件-1"><a class="header" href="#vscode实用插件-1">VSCode实用插件</a></h1>
<p>历史插件下载</p>
<p><a href="https://open-vsx.org">https://open-vsx.org</a></p>
<h2 id="vscode-mindmap-1"><a class="header" href="#vscode-mindmap-1">vscode-mindmap</a></h2>
<p>画思维图</p>
<p><a href="https://marketplace.visualstudio.com/items?itemName=Souche.vscode-mindmap">https://marketplace.visualstudio.com/items?itemName=Souche.vscode-mindmap</a></p>
<h2 id="drawio-1"><a class="header" href="#drawio-1">draw.io</a></h2>
<p>画流程图</p>
<p><a href="https://marketplace.visualstudio.com/items?itemName=hediet.vscode-drawio">https://marketplace.visualstudio.com/items?itemName=hediet.vscode-drawio</a></p>
<h2 id="notes-1"><a class="header" href="#notes-1">Notes</a></h2>
<p>用于编辑md文件</p>
<p><a href="https://marketplace.visualstudio.com/items?itemName=dionmunk.vscode-notes">https://marketplace.visualstudio.com/items?itemName=dionmunk.vscode-notes</a></p>
<h2 id="project-manager-1"><a class="header" href="#project-manager-1">Project Manager</a></h2>
<p>快速管理项目文件</p>
<p><a href="https://marketplace.visualstudio.com/items?itemName=alefragnani.project-manager">https://marketplace.visualstudio.com/items?itemName=alefragnani.project-manager</a></p>
<h2 id="hex-editor-1"><a class="header" href="#hex-editor-1">Hex Editor</a></h2>
<p>快速编辑二进制文件</p>
<p><a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode.hexeditor">https://marketplace.visualstudio.com/items?itemName=ms-vscode.hexeditor</a></p>
<h2 id="sqlite3-editor-1"><a class="header" href="#sqlite3-editor-1">SQLite3 Editor</a></h2>
<p>快速编辑sqlite3</p>
<p><a href="https://marketplace.visualstudio.com/items?itemName=yy0931.vscode-sqlite3-editor">https://marketplace.visualstudio.com/items?itemName=yy0931.vscode-sqlite3-editor</a></p>
<div style="break-before: page; page-break-before: always;"></div><h1 id="excalidraw"><a class="header" href="#excalidraw">excalidraw</a></h1>
<h2 id="网页版在线使用"><a class="header" href="#网页版在线使用">网页版在线使用</a></h2>
<p><a href="https://excalidraw.com">https://excalidraw.com</a></p>
<h2 id="离线版安装"><a class="header" href="#离线版安装">离线版安装</a></h2>
<p><a href="https://github.com/excalidraw/excalidraw">https://github.com/excalidraw/excalidraw</a></p>
<pre><code>git clone https://github.com/excalidraw/excalidraw.git

cd excalidraw

yarn install

yarn start
</code></pre>
<div style="break-before: page; page-break-before: always;"></div><h1 id="hexo开发配置"><a class="header" href="#hexo开发配置">Hexo开发配置</a></h1>
<h2 id="教程"><a class="header" href="#教程">教程</a></h2>
<h3 id="中文官网"><a class="header" href="#中文官网">中文官网</a></h3>
<p><a href="https://hexo.io/zh-cn">https://hexo.io/zh-cn</a></p>
<h3 id="主题下载"><a class="header" href="#主题下载">主题下载</a></h3>
<p><a href="https://hexo.io/themes">https://hexo.io/themes</a></p>
<h2 id="安装-7"><a class="header" href="#安装-7">安装</a></h2>
<pre><code>  cnpm install hexo-cli -g
  hexo init blog
  cd blog
  cnpm install
  hexo s
</code></pre>
<h2 id="运行"><a class="header" href="#运行">运行</a></h2>
<pre><code>hexo clean

hexo s

hexo g
</code></pre>
<h2 id="挺好用的主题"><a class="header" href="#挺好用的主题">挺好用的主题</a></h2>
<p>hexo-theme-reimu</p>
<p><a href="https://github.com/D-Sketon/hexo-theme-reimu">https://github.com/D-Sketon/hexo-theme-reimu</a></p>
<p>simple99</p>
<p><a href="https://github.com/98zi/hexo-theme-simple99">https://github.com/98zi/hexo-theme-simple99</a></p>

                    </main>

                    <nav class="nav-wrapper" aria-label="Page navigation">
                        <!-- Mobile navigation buttons -->


                        <div style="clear: both"></div>
                    </nav>
                </div>
            </div>

            <nav class="nav-wide-wrapper" aria-label="Page navigation">

            </nav>

        </div>




        <script>
            window.playground_copyable = true;
        </script>


        <script src="elasticlunr.min.js"></script>
        <script src="mark.min.js"></script>
        <script src="searcher.js"></script>

        <script src="clipboard.min.js"></script>
        <script src="highlight.js"></script>
        <script src="book.js"></script>

        <!-- Custom JS scripts -->

        <script>
        window.addEventListener('load', function() {
            window.setTimeout(window.print, 100);
        });
        </script>

    </div>
    </body>
</html>
